在Unity中平滑地移动播放器平铺

时间:2014-06-28 00:40:04

标签: c# unity3d 3d

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

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

通过按键,播放器应平滑移动到下一个图块,而不是停止等等。

我怎样才能达到这个目的? (在C#中)

2 个答案:

答案 0 :(得分:5)

您可以查看来自GridMoveUnifyWiki

如果您将此问题发布到answers.unity3d.comforum.unity3d.com,您可能会收到更多回复,因为这些论坛专门针对Unity3d。

答案 1 :(得分:2)

这就是我要做的:你给你的玩家类一个目标字段,例如一个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中的正常位置外,您可能想要为玩家的当前位置创建一个字段。然后,您可以通过一个小的delta更新update-cylce中的GameObject.position,直到GameObject.position和target的位置具有(大致相同时使用epsilon)相同的值。

一些提示

  • Vector2.MoveTowards可以帮助您
  • 要检查目标和位置是否“足够接近”,您可以从另一个中减去一个并查看结果向量的大小。
  • 当你朝目标移动时要小心过冲。如果您的移动距离大于或等于位置和目标之间的距离,只需将位置设置为目标。