2013-02-21 75 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

相關問題