统一刚体恒定速度

时间:2012-12-22 22:04:27

标签: unity3d game-physics


我有一个受重力和碰撞影响的物体。 如何使其在X轴上保持恒定速度?
我有类似的东西:

void Update () {        
     rigidbody.velocity = 5 * new Vector3(1f,0f,0f);
}

3 个答案:

答案 0 :(得分:2)

请注意,物理引擎的更新时间间隔与其他基本游戏逻辑不同。

特别是,每次调用 FixedUpdate() 时,Rigidbody的状态会更新一次,因此如果您想覆盖物理引擎的任何结果,您可能希望在您自己的FixedUpdate()内进行,而不是Update()

答案 1 :(得分:2)

如果您真的希望对象无论如何都具有恒定速度,那么您不希望它受到碰撞和重力的影响。在这种情况下,您应该检查rigidbody属性中的Kinematic复选框。这样,您就可以从脚本中移动对象的变换,并且对象的位置不会受到其他任何内容的影响。

答案 2 :(得分:0)

除了每个人已经告诉过你的内容之外,我想补充一点,如果你想在特定方向保持恒定速度(在你的情况下是X轴),那么更正确的代码将是:

void FixedUpdate () {
    // We need to keep the old y and z component if we want the object to still be affected by gravity and other things
    rigidbody.velocity = new Vector3(5.0f , rigidbody.velocity.y, rigidbody.velocity.z);
}