Libgdx Actions =>逐渐将Actor从A点移动到B点

时间:2013-02-21 14:16:06

标签: libgdx

我想逐渐为我的演员制作动画。我添加了这个Action来将Actor从A点移动到B点。

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

也尝试了这个(在10秒内移动):

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

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

2 个答案:

答案 0 :(得分:10)

第二种形式:

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

应该在10秒钟内将你的演员移动到posX,posY。

第一种形式将演员在x和y中移动1步,然后完成将演员立即移动到posX,posY。 Actions.sequence一个接一个地运行给定的动作,它们不会相互修改。

你在舞台上如何(和在哪里)调用act()?这就决定了更新帧中Actor的程度,因此如果您每帧调用多次或传递错误的值,则操作过快。

答案 1 :(得分:4)

因为当我搜索“Libgdx Move to Point”时你的答案是最重要的,我会在这里发布一个解决方案。

这是一个解决方案,不是专门针对演员:

在类中定义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;
}

现在只需将Velocity添加到Position,对象将移动到给定的点

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