给定原点坐标和目标坐标时,为什么Unity会以错误的方向绘制射线?

时间:2019-02-12 17:26:22

标签: c# unity3d 3d

Image of ray and camera position Changing of the angle between Main char and the raycase 我正在制作游戏,并且正在编写脚本,以防止相机穿过墙壁。 (白色)射线正在检查碰撞。它应该从主角到摄像机,但它是朝另一个方向,与给出的方向完全不同。另外,当我移动我的主角时,射线的角度也会移动。

我试图将目的地坐标更改为:

gameObject.transform.position + New Vector3(...); 

但是,结果是相似的。

bool HasHit()
    {
//check if ray hits a collider
         return (Physics.Raycast(gameObject.transform.position, TestForHit.transform.position, out hit));
    }
 void DrawLines()
    {
//debug the ray (hits wrong collider)
        Debug.DrawRay(gameObject.transform.position, TestForHit.transform.position);
    }

我希望射线只能像直线一样检查“主要角色”和“相机”之间的对撞机。

1 个答案:

答案 0 :(得分:3)

您应该使用Debug.DrawLine,因为您使用的是开始位置和目的地


注意:Debug.DrawRay函数使用起始位置和 direction 作为其前两个参数,并且不能指定长度(它将永远存在)。如果您有两个位置AB,并且想在它们之间绘制射线,则需要获取 direction 来绘制射线:

Vector3 A;
Vector3 B;
Vector3 direction = (B - A).normalized;
Debug.DrawRay(A, direction);

Physics.RayCast也是如此。当您应该使用方向时,您将目的地用作第二个参数。