我想逐渐为我的演员制作动画.我添加了这个Action来将Actor从A点移动到B点.
addAction(Actions.sequence(Actions.moveBy(1, 1), Actions.moveTo(posX, posY)));
Run Code Online (Sandbox Code Playgroud)
也尝试了这个(moveTo在10秒内):
addAction(Actions.moveTo(posX, posY, 10)));
Run Code Online (Sandbox Code Playgroud)
但是演员动作太快了.怎么了?
P.T*_*.T. 10
第二种形式:
addAction(Actions.moveTo(posX, posY, 10)));
Run Code Online (Sandbox Code Playgroud)
应该在10秒钟内将你的演员移动到posX,posY.
第一种形式将演员在x和y中移动1步,然后完成将演员立即移动到posX,posY. Actions.sequence一个接一个地运行给定的动作,它们不会相互修改.
你act()在舞台上怎么样(以及在哪里)?这就决定了Actor在帧中更新多少,因此如果每帧多次调用它或传递错误的值,则操作将过快地传递.
小智 5
仅仅因为当我搜索“Libgdx Move to Point”时你的回答是最重要的,我会在这里发布一个解决方案。
这是一个解决方案,不是专门针对演员的:
在类中定义 Vector2 变量,这些变量将用于对象位置:
protected Vector2 v2Position;
protected Vector2 v2Velocity;
Run Code Online (Sandbox Code Playgroud)
该位置在构造函数或其他任何地方设置。要获取对象的速度并将其移动到给定点:
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;
}
Run Code Online (Sandbox Code Playgroud)
现在只需将速度添加到位置,对象就会移动到给定的点
@Override public void update() {
v2Position.add (v2Velocity); // Update position
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9473 次 |
| 最近记录: |