2013-02-21 51 views
5

我想逐渐为我的演员设置动画。我加入这个行动从A点移动演员到B点Libgdx Actions =>将演员从A点逐渐移动到B点

addAction(Actions.sequence(Actions.moveBy(1, 1), Actions.moveTo(posX, posY))); 

也试过这个(在10秒的moveTo):

addAction(Actions.moveTo(posX, posY, 10))); 

但演员的动作太快。怎么了?

+0

你可以也可以使用[Universal Tween Engine](https://github.com/AurelienRibon/universal-tween-engine)。也适用于精灵并且有许多功能。 – trinity420 2018-02-22 14:16:11

回答

10

第二种形式:

addAction(Actions.moveTo(posX, posY, 10))); 

应在10秒的过程中你的演员移到POSX,波西。

第一种形式将在x和y中移动actor 1步,然后完成将actor移动到posX,posY。 Actions.sequence依次运行给定的操作,它们不会相互修改。

如何(以及在​​哪里)在舞台上致电act()?这决定了在帧中更新Actor的次数,因此如果每帧调用多次或传递错误的值,这些操作将会过快。

+0

+1给我一个线索。 – Alf 2013-02-21 16:29:23

4

只是因为当我搜索'Libgdx移动到点'时,你的答案是顶部我会在这里发布一个解决方案。

这里是一个解决方案,而不是专门针对参与者:

定义在类Vector2变量,它们将被用于对象的位置是:

protected Vector2 v2Position; 
protected Vector2 v2Velocity; 

的位置被设定在构造函数或其他地方。要获取物体的速度,并将其移动到指定点:

public void setVelocity (float toX, float toY) { 

// The .set() is setting the distance from the starting position to end position 
v2Velocity.set(toX - v2Position.x, toY - v2Position.y); 
v2Velocity.nor(); // Normalizes the value to be used 

v2Velocity.x *= speed; // Set speed of the object 
v2Velocity.y *= speed; 
} 

现在仅仅是速度增加的位置和对象将移动到给定点

@Override public void update() { 
    v2Position.add (v2Velocity); // Update position 
} 
+0

谢谢,这指出我在正确的方向。在更新方法中,我做了'v2Position.lerp(v2Velocity);'因为我需要对象移动并停在特定位置。 – Raf 2013-10-31 16:22:13

相关问题