移动速度控制

时间:2014-03-05 02:04:41

标签: java libgdx tween

我正在使用补间引擎来平滑移动实体的路径。要进行插值,您需要输入如下函数:

Tween.to(myObject, POSITION, 1.0f) .target(50, 70) .ease(Quad.INOUT) .start(myManager);

to()函数的最后一个参数是持续时间。我所学到的,如果路径越长,实体就越快地移动到目标。路径越短,实体移动越慢。我在每个实体中都有一个名为movementSpeed的浮点变量,它应该每秒移动实体7个像素。将变量用于补间的移动速度而不是在工厂构造函数中指定一次的方式是什么?

我的实施:

Stack<Vector2i> stack = new Stack<Vector2i>();
/* ...pushing path points from last to first to the stack. */


Tween t = Tween.to(this, EntityAccessor.POS, 4.0f);
for (int i = stack.size()-1; i >= 0; i--) {
    Vector2i cur = stack.get(i);
    if (i == 0) {    // if point is last then
        t.target(cur.getX(), cur.getY());
    } else {
        t.waypoint(cur.getX(), cur.getY());
    }           
}

t.ease(Quad.INOUT);
t.path(TweenPaths.catmullRom);
t.delay(0.5f);
t.start(game.tweenManager);

2 个答案:

答案 0 :(得分:1)

创建补间并使用工厂方法Tween.to(...)设置其持续时间后,我认为没有办法改变其持续时间。我建议使用一个速度并每帧更新它以获得你想要的效果。无论如何,设定速度或每帧计算它都会使补间的目的无效。

答案 1 :(得分:0)

我没有对持续时间进行硬编码,你可以计算它。

即。您始终可以使用

计算行驶距离
  

距离= sqrt(dx * dx + dy * dy)

现在同时具有距离和速度,您可以将持续时间设置为距离/速度。

希望这有帮助。