【问题标题】:Need Unity character controller to make sharp 90 degree turns and not slide when turning需要 Unity 角色控制器进行 90 度急转弯并且转弯时不滑动
【发布时间】:2013-03-21 16:52:02
【问题描述】:

我正在使用第一人称控制器来控制我的角色移动。在左箭头键上,我希望角色立即旋转 90 度并继续前进。目前,当我按下箭头键时,角色会进行 90 度的急转弯,但角色之前的前进动力需要一秒钟才能消退,因此角色最终会朝之前移动的方向滑动。

我能想到的最接近的例子是直观地解释我正在尝试做的事情是角色如何在 Temple Run 中变得敏锐。我的游戏目前是如何运作的,如果我让壁架上的角色急速左转,他很可能会保持原来的动力并在转弯后立即滑下边缘。

由于我的角色在 x/z 轴上运行,我想知道是否有某种方法可以交换方向速度/动量?角色在 x 轴上的速度在它转动时会立即切换到 z 轴,而另一个将设置为零。我显然愿意接受任何能够实现我所寻找的解决方案。

我研究了第一人称控制器中的 CharacterMotor 类,但还没有找到我可以调整的部分来实现这一点。

非常感谢任何帮助。

谢谢。

【问题讨论】:

    标签: unity3d physics momentum


    【解决方案1】:

    您可以尝试在转弯前停止刚体的速度。

    this.rigidbody.velocity = Vector3.zero;
    this.rigidbody.angularVelocity = Vector3.zero;
    

    如果您希望对象像以前一样继续,您可以尝试通过将当前速度保存在变量中,将其设置为 0,旋转它然后放回旧速度(仍然向前)来尝试使用它。

    如果它适用于全局向量(所以从世界的角度来看,而不是对象),那么你可以尝试负速度,实际上导致它“向后”移动。我现在无法测试它,但无论哪种方式,我认为您需要先将速度设置为零,然后再转动角色。

    【讨论】:

      猜你喜欢
      • 2018-04-23
      • 1970-01-01
      • 1970-01-01
      • 2020-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多