Physics.Raycast有时候不会打

时间:2013-12-08 19:54:06

标签: c# unity3d raycasting

我有一个非常奇怪的Raycast行为。 Theare是我游戏中的2个移动物体。我在Update方法中使用raycast来查明第二个对象是否在附近。但有时候,光线投射会明显失败,而真正的"的情况。有人可以帮我解决这个问题吗?非常感谢!

enter image description here

    // Returns false, but should be true
    var middle = Physics.Raycast(Car.SensorPointRight.position, 
                                 Car.CarObject.right, out middleHitsInfo, 
                                (DistanceBetweenPaths - _carColliderOffset));

    if (IsUserCar)
        DebugHepler.Ray(Car.SensorPointRight.position, 
                        Car.CarObject.right * (DistanceBetweenPaths - _carColliderOffset),
                        middle ? Color.red : Color.white);

1 个答案:

答案 0 :(得分:2)

在unity3d中,只有在FixedUpdate()方法运行后才会更新碰撞器,因此这可能就是为什么你的对象没有被光线投射击中的原因。

通常最好将游戏对象的所有变换与FixedUpdate()中的碰撞者保持一致,这样光线投射应该按预期工作。

对于初学者,只需尝试将您在问题中提到的代码从Update()方法移动到FixedUpdate()方法(如果您没有,只需创建一个)。