2014-03-05 59 views
0

我使用吐温引擎用于平滑移动实体的路径。为了使插值你喂的功能是这样的:吐温移动速度控制

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

最后一个参数的to()功能是持续时间。我所学到的,如果路径更长,实体会更快地移动到目标。路径越短,实体移动越慢。我在每个实体中都有浮动变量moveSpeed,它应该每秒移动实体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); 

回答

0

我取而代之,你可以计算出它。

即随时可以计算距离,通过使用

距离= SQRT(DX * DX + DY * DY)

现在具有距离和速度行驶,可以设置持续时间作为距离/速度。

希望这会有所帮助。

1

一旦创建补间,其持续时间设定工厂方法Tween.to(...),我不认为有一种方法来改变它的持续时间。我会建议使用速度并每帧更新它以获得所需的效果。无论如何,设置速度或计算每一帧都会挫伤补间的目的。

+0

谢谢你让我知道,吐温不是我所需要的。 – Marko