首页 > 解决方案 > 为什么在给定原点坐标和目标坐标时,Unity 会以错误的方向绘制光线?

问题描述

光线和相机位置的图像 更改 Main char 和 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);
    }

我希望光线只检查主角和相机之间的碰撞体,比如直线。

标签: c#unity3d3d

解决方案


您应该使用Debug.DrawLine,因为您使用的是 start location 和destination


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

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

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


推荐阅读