📜  unity 如何移动对象 - C# (1)

📅  最后修改于: 2023-12-03 15:20:52.979000             🧑  作者: Mango

Unity 如何移动对象 - C#

在 Unity 中,移动游戏对象可以通过修改它们的 Transform 组件来实现。

移动 GameObject

我们可以使用 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;
移动 Rigidbody

如果你的 GameObject 上有一个 Rigidbody,你可以使用 Rigidbody 的 AddForce() 方法来移动它。第一个参数是要施加的力的向量,可分别指定 x、y 和 z 轴上的施加力量。

// 给 Rigidbody 施加一个在 x 轴上的力
rigidbody.AddForce(Vector3.right);

你还可以使用 velocityangularVelocity 属性分别控制 Rigidbody 的速度和角速度。例如:

// 设置 Rigidbody 的速度为在 x 轴上向右移动
rigidbody.velocity = Vector3.right;

// 设置 Rigidbody 的角速度为在 y 轴上旋转
rigidbody.angularVelocity = Vector3.up;
移动 CharacterController

如果你的 GameObject 上有一个 CharacterController,你可以使用它的 Move() 方法来移动它。该方法的参数是要移动的向量,可分别指定 x、y 和 z 轴上的移动量。

// 在 x 轴上向右移动 1,y 轴上不变,z 轴上不变
controller.Move(Vector3.right * Time.deltaTime);
总结

以上就是在 Unity 中移动 GameObject、Rigidbody 和 CharacterController 的方法。无论你在使用哪种组件,都要注意使用 delta time 来保持运动的平滑性。