7

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

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

也试过这个(10秒内moveTo):

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

但是Actor动作太快了。怎么了?

4

2 回答 2

10

第二种形式:

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

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

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

你是如何(以及在​​哪里)在舞台上打电话act()的?这决定了在一帧中更新多少Actor,因此如果您每帧多次调用它或传递错误的值,则动作将通过得太快。

于 2013-02-21T16:24:47.947 回答
5

仅仅因为当我搜索“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;
}

现在只需将速度添加到位置,对象将移动到给定的点

@Override public void update() {
    v2Position.add (v2Velocity);    // Update position
}
于 2013-07-04T22:27:11.343 回答