Unity 3D Raycast的方向不正确

时间:2019-03-08 03:09:10

标签: c# unity3d 3d raycasting

我写了一些代码,该代码应该从游戏对象的肩膀发出光线,并经过游戏对象的手。这是为了给出鼠标的方向,因此,如果我的角色捡起一个物品,他们便可以在该方向上使用该物品,即枪在该方向上射击。目前,我只能绘制演员表以对其进行调试,因为演员表从正确的位置发射,但没有穿过手。香港专业教育学院基于先前问题的答案尝试了此代码的多次迭代,但似乎不起作用。游戏是一个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);

该代码位于手动游戏对象上,当我从原始位置移动包机时,它也会做一些奇怪的事情,例如翻转方向,只旋转一半并且不会向相反方向发出射线。

1 个答案:

答案 0 :(得分: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);