【问题标题】:Unity rigidbody constant velocityunity 刚体恒速
【发布时间】:2012-12-22 22:04:26
【问题描述】:


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

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

【问题讨论】:

    标签: unity3d game-physics


    【解决方案1】:

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

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

    【讨论】:

    • +1 另一种方法可能是只施加一次力。那么物理引擎应该保持一个恒定的速度,只要它垂直于重力并且你保存 FixedUpdate 代码。
    • 如果我只施加一次力,我的对象很快就会因为碰撞而停止。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      除了每个人已经告诉过您的内容之外,我还要补充一点,如果您想在特定方向(在您的情况下为 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);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-15
        • 2016-11-28
        相关资源
        最近更新 更多