📅  最后修改于: 2023-12-03 15:20:52.979000             🧑  作者: Mango
在 Unity 中,移动游戏对象可以通过修改它们的 Transform 组件来实现。
我们可以使用 Transform 的 Translate()
方法来移动一个 GameObject。该方法的第一个参数是要移动的向量,可分别指定 x、y 和 z 轴上的移动量。
// 在 x 轴上向右移动 1, 在 y 轴上不变,z 轴上不变
transform.Translate(Vector3.right * Time.deltaTime);
如果你已经有一个参考点,你也可以使用 Transform 的 position
属性直接修改 GameObject 的位置。例如:
// 把 GameObject 的位置设置为 (1, 0, 0)
transform.position = new Vector3(1, 0, 0);
如果你想相对于参考点进行移动,可以使用 Transform 的 localPosition
属性。例如:
// 在 x 轴上向右移动 1,y 轴上不变,z 轴上不变
transform.localPosition += Vector3.right * Time.deltaTime;
如果你的 GameObject 上有一个 Rigidbody,你可以使用 Rigidbody 的 AddForce()
方法来移动它。第一个参数是要施加的力的向量,可分别指定 x、y 和 z 轴上的施加力量。
// 给 Rigidbody 施加一个在 x 轴上的力
rigidbody.AddForce(Vector3.right);
你还可以使用 velocity
和 angularVelocity
属性分别控制 Rigidbody 的速度和角速度。例如:
// 设置 Rigidbody 的速度为在 x 轴上向右移动
rigidbody.velocity = Vector3.right;
// 设置 Rigidbody 的角速度为在 y 轴上旋转
rigidbody.angularVelocity = Vector3.up;
如果你的 GameObject 上有一个 CharacterController,你可以使用它的 Move()
方法来移动它。该方法的参数是要移动的向量,可分别指定 x、y 和 z 轴上的移动量。
// 在 x 轴上向右移动 1,y 轴上不变,z 轴上不变
controller.Move(Vector3.right * Time.deltaTime);
以上就是在 Unity 中移动 GameObject、Rigidbody 和 CharacterController 的方法。无论你在使用哪种组件,都要注意使用 delta time 来保持运动的平滑性。