Unity3d - Rigidbody vs CharacterController vs transform.Translate for Sidescroller
Unity3d - Rigidbody vs CharacterController vs transform.Translate for Sidescroller
我最近深入研究了 Unity,对于我的第一个个人项目,我打算制作一个 3d sidescroller。然而,sidescroller 的行为类似于 2d platformer/sidescroller(仅 x 和 y 轴)。我想知道哪个是玩家最好的运动控制。在搜索自己时,我通过使用 CharacterController、Rigidbody 甚至简单的 transform.Translate 找到了不同的建议。我正在努力了解使用哪个以及每个最佳用途。预先感谢您的任何解释。
好吧,我不知道 Rigidbody 和 CharacterController 之间的区别。但我绝对不会使用 Transform.translate,至少如果它不仅仅是左右跳跃的话。主要是物理和感觉的原因。
我认为您必须使用 CharacterController,但我真的不确定
这篇Unity Which Movement You Should Choose应该对您有很大帮助并回答您的问题。建议:未来计划在不使用任何 build-in 组件的情况下创建自己的移动逻辑,这是非常好的做法。
嗯,是否涉及任何物理/碰撞检测等?
→ 这基本上排除了在 Transform
中进行任何操作,因为它会破坏物理引擎的碰撞检测和一般 feel/correctness。
Rigidbody
响应重力和 PhysicsMaterial
s 提供弹跳和摩擦等力,通常你应用更多基于事件的值(如爆炸等)。
关于如何向刚体对象添加力和速度,有很多不同的 API,这给了您很多控制权。
但是,对于连续的用户输入,这有时控制起来有点奇怪,因为您要么必须使用计算起来很奇怪的力(例如,如果您想要最大速度),要么绝对速度输入有点破坏物理控制对象的想法。
另一方面,CharacterController
不会自动响应所有这些物理。它基本上介于两者之间,使用 Move
仍然可以响应 碰撞 .
并与之交互
任何重力、弹跳、摩擦力和其他你需要计算自己的力,并通过将产生的运动(=速度)传递给Move
方法每一帧[=45来相应地应用=].
另一种方法是 SimpleMove
,它会自动应用重力。
我最近深入研究了 Unity,对于我的第一个个人项目,我打算制作一个 3d sidescroller。然而,sidescroller 的行为类似于 2d platformer/sidescroller(仅 x 和 y 轴)。我想知道哪个是玩家最好的运动控制。在搜索自己时,我通过使用 CharacterController、Rigidbody 甚至简单的 transform.Translate 找到了不同的建议。我正在努力了解使用哪个以及每个最佳用途。预先感谢您的任何解释。
好吧,我不知道 Rigidbody 和 CharacterController 之间的区别。但我绝对不会使用 Transform.translate,至少如果它不仅仅是左右跳跃的话。主要是物理和感觉的原因。
我认为您必须使用 CharacterController,但我真的不确定
这篇Unity Which Movement You Should Choose应该对您有很大帮助并回答您的问题。建议:未来计划在不使用任何 build-in 组件的情况下创建自己的移动逻辑,这是非常好的做法。
嗯,是否涉及任何物理/碰撞检测等?
→ 这基本上排除了在
Transform
中进行任何操作,因为它会破坏物理引擎的碰撞检测和一般 feel/correctness。Rigidbody
响应重力和PhysicsMaterial
s 提供弹跳和摩擦等力,通常你应用更多基于事件的值(如爆炸等)。关于如何向刚体对象添加力和速度,有很多不同的 API,这给了您很多控制权。
但是,对于连续的用户输入,这有时控制起来有点奇怪,因为您要么必须使用计算起来很奇怪的力(例如,如果您想要最大速度),要么绝对速度输入有点破坏物理控制对象的想法。
另一方面,
并与之交互CharacterController
不会自动响应所有这些物理。它基本上介于两者之间,使用Move
仍然可以响应 碰撞 .任何重力、弹跳、摩擦力和其他你需要计算自己的力,并通过将产生的运动(=速度)传递给
Move
方法每一帧[=45来相应地应用=].另一种方法是
SimpleMove
,它会自动应用重力。