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

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

我正在制作一个游戏,我正在编写一个可以防止相机穿过墙壁的脚本。 (白色)光线正在检查碰撞。它应该从主角到相机,但它朝另一个方向发展,完全不同于给定的方向。此外,当我移动我的主角色时,光线的角度也会移动。

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

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# unity3d 3d
1个回答
3
投票

您应该使用Debug.DrawLine,因为您正在使用起始位置和目的地。


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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.