Unity 3D Raycast没有朝着正确的方向发展

问题描述 投票:0回答:1

我写了一些代码,它应该从gameobject肩膀发出一个光线投射并通过游戏对象的手。这是为了给出鼠标是这样的方向,如果我的角色拿起一个项目,他们可以在那个方向上使用那个项目,即枪向那个方向射击。目前我只有它绘制演员来调试它,因为演员阵容从正确的位置发出但不会通过手。香港专业教育学院根据前一个问题的答案尝试了这个代码的多次迭代,但它似乎没有工作。游戏是2.5D侧卷轴。

    pos.x = transform.position.x;
    pos.y = transform.position.y -1.4f;
    pos1.x = shoulder.transform.position.x;
    pos1.y = shoulder.transform.position.y;
    pos1.z = 15f;
    pos.z =0f;
    RaycastHit info;
    Debug.DrawRay(pos1, pos, Color.yellow);

代码在手上的游戏对象上,当我从orgin移动章程时,它也会做出奇怪的事情,比如翻转方向,只能中途旋转而不会向相反方向发射光线投射。

c# unity3d 3d raycasting
1个回答
1
投票

从你以前的矢量开始:

// Hand
pos.x = transform.position.x;
pos.y = transform.position.y -1.4f;
pos.z = 0f;

// Shoulder
pos1.x = shoulder.transform.position.x;
pos1.y = shoulder.transform.position.y;
pos1.z = 15f;

从肩矢量中减去手矢量以获得两点之间的距离(或增量)。

Vector3 dir = pos1 - pos;

// For bonus point you can set the length of the ray by using dir as a unit vector
public float length;

dir = dir.normalized * length;

最后将肩部的位置和包含光线方向和长度的新方向向量输入到函数中。

Debug.DrawRay(pos1, dir, Color.yellow);
© www.soinside.com 2019 - 2024. All rights reserved.