首页 > 解决方案 > 在游戏中移动物体

问题描述

我有一张图片,我正在尝试使用一个函数四处走动:

public void MoveXY(Vector2 target)
{
    Vector2 startPosition = this.pos;
    Vector2 endPosition = target;
    float lerpAmount = 0.05f;
    this.pos = Vector2.Lerp(startPosition, endPosition, lerpAmount);
}

我在游戏更新循环中调用它。

我想让一些变量bool 移动,跟踪我的 obj 正在移动,但我很难在游戏循环中实现这一点。

我需要类似的东西:

obj.MoveXY(target1);

如果命令一完成

obj.MoveXY(target2);

这样做的正确方法是什么?

标签: c#unity3d

解决方案


您遇到的困难是游戏应用程序的典型问题。与常规应用程序不同,您不能简单地通过语句序列反映动作序列,因为每次游戏循环更新时只会执行其中的一小部分。

您必须记住游戏的当前状态以及更新后的每个动作。这可能变得相当复杂。解决此问题的方法是使用有限状态机,如Game Programming Patterns / Design Patterns Revisited: StateGamedevelopment Finite-State Machines: Theory and Implementation中所述。


推荐阅读