【问题标题】:Physics.Raycast not hit sometimesPhysics.Raycast 有时不命中
【发布时间】:2013-12-08 19:54:05
【问题描述】:

我有一个非常奇怪的 Raycast 行为。我的游戏中有 2 个移动物体。我在 Update 方法中使用 raycast 来确定第二个对象是否在附近。但有时 raycast 在明显“真实”的情况下返回 false。有人可以帮我解决这个问题吗?非常感谢!

    // 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);

【问题讨论】:

    标签: c# unity3d raycasting


    【解决方案1】:

    在 unity3d 中,碰撞器仅在 FixedUpdate() 方法运行后更新,因此这可能是您的对象没有被光线投射击中的原因。

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

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

    【讨论】:

    • 抱歉太久才回答!你是对的,现在它可以工作了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-31
    相关资源
    最近更新 更多