在Unity中逐个平滑地移动玩家

本文关键字:移动 玩家 平滑 Unity | 更新日期: 2023-09-27 18:10:33

我想让玩家移动一个特定的量(在这种情况下是1个贴图/单位),然后阻止他。就像在这个视频中一样:

http://www.youtube.com/watch?v=DotOAbNngc4

通过按下一个键,玩家应该平滑地移动到下一个贴图,然后停止,等等。

我如何存档这个?(c#)

在Unity中逐个平滑地移动玩家

你可以看看来自UnifyWiki的GridMove

如果你把这个问题贴在answers.unity3d.com或forum.unity3d.com上,你可能会得到更多的回应,因为这些论坛是专门针对Unity3d的。

我会这样做:你给你的玩家类一个目标字段,例如一个2d向量。这将包含播放器的当前位置(当初始化或到达目标时)或你想要移动播放器的目标。

现在在你的更新中你这样做:

if target equals your current position then check user input for movement.
    if user requests movement set target to position adjacent to current position.
else slowly move player towards target.

你可能想要在GameObject中的正常位置之外为玩家的当前位置创建一个字段。然后你可以更新GameObject。在更新周期中的位置以一个小的增量移动,直到GameObject的位置。位置和目标有(大致!当比较相同的值时使用epsilon

一些提示
  • Vector2。MoveTowards可以帮助你
  • 要检查目标和位置是否"足够近",你可以从另一个减去一个,看看得到的矢量的大小。
  • 当你向目标移动时要小心过冲。如果您的移动距离大于或等于位置和目标之间的距离,只需将位置设置为目标。