【发布时间】:2012-12-22 22:04:26
【问题描述】:
我有一个受重力和碰撞效应影响的物体。
如何使它在 X 轴上保持恒定的速度?
我有类似的东西:
void Update () {
rigidbody.velocity = 5 * new Vector3(1f,0f,0f);
}
【问题讨论】:
标签: unity3d game-physics
我有一个受重力和碰撞效应影响的物体。
如何使它在 X 轴上保持恒定的速度?
我有类似的东西:
void Update () {
rigidbody.velocity = 5 * new Vector3(1f,0f,0f);
}
【问题讨论】:
标签: unity3d game-physics
请注意,物理引擎的更新间隔与其他基本游戏逻辑不同。
特别是,Rigidbody 的状态会在每次调用 FixedUpdate() 时更新一次,因此如果您想覆盖物理引擎的任何结果,您可能希望在您的拥有FixedUpdate(),而不是Update()。
【讨论】:
如果您真的希望物体无论如何都具有恒定的速度,那么您不希望它受到碰撞和重力的影响。在这种情况下,您应该选中刚体属性中的运动学复选框。这样,您就可以从脚本中移动对象的变换,并且对象的位置不会受到任何其他因素的影响。
【讨论】:
除了每个人已经告诉过您的内容之外,我还要补充一点,如果您想在特定方向(在您的情况下为 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);
}
【讨论】: