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 响应重力和 PhysicsMaterials 提供弹跳和摩擦等力,通常你应用更多基于事件的值(如爆炸等)。

    关于如何向刚体对象添加力和速度,有很多不同的 API,这给了您很多控制权。

    但是,对于连续的用户输入,这有时控制起来有点奇怪,因为您要么必须使用计算起来很奇怪的力(例如,如果您想要最大速度),要么绝对速度输入有点破坏物理控制对象的想法。

  • 另一方面,CharacterController不会自动响应所有这些物理。它基本上介于两者之间,使用 Move 仍然可以响应 碰撞 .

    并与之交互

    任何重力、弹跳、摩擦力和其他你需要计算自己的力,并通过将产生的运动(=速度)传递给Move方法每一帧[=45来相应地应用=].

    另一种方法是 SimpleMove,它会自动应用重力。