我有一个受重力和碰撞影响的物体。
如何使其在X轴上保持恒定速度?
我有类似的东西:
void Update () {
rigidbody.velocity = 5 * new Vector3(1f,0f,0f);
}
答案 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);
}