1

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

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

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

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

我将不胜感激任何帮助。

谢谢你。

4

1 回答 1

1

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

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

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

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

于 2013-03-21T08:52:02.220 回答