我正在使用补间引擎来平滑移动实体的路径。要进行插值,您需要提供如下功能:

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

to()函数的最后一个参数是持续时间。我了解到,如果路径更长,则实体可以更快地移动到目标。路径越短,实体移动就越慢。我在每个实体中都有一个称为motionSpeed的float变量,该变量应每秒将实体移动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);

最佳答案

创建补间动画并使用工厂方法Tween.to(...)设置补间动画的持续时间后,我认为无法更改其持续时间。我建议使用速度并在每帧中对其进行更新以达到所需的效果。设定速度或计算每一帧都无法达到补间的目的。

09-09 23:03
查看更多