2017-03-15 42 views
1

我做出LibGDX 2D遊戲和玩家的移動系統是非常簡單的:儘管相機在LibGDX中旋轉,如何在固定的方向移動播放器?

if (Gdx.input.isKeyPressed(Input.Keys.W)) 
     player.setPosition(player.getPosition().x, player.getPosition().y + 100 * delta); 

而對於A,S和d鍵同樣的原則。

但現在,我有一個「醉模式」 - 因而,有在世界上的攝像頭旋轉,所以才:

camera.rotate(MathUtils.random(-50, 50) * delta); 

但是,如果我按W鍵時,攝像機旋轉時,玩家不再直線向上移動。所以,如果旋轉是例如180°,玩家直線向下移動,這實際上非常合乎邏輯。

那麼有沒有辦法,玩家總是移動,向上按W時,向右按D等等,無論當前的旋轉是什麼?

謝謝你提前

+1

使用一個矢量(在你的情況下會是[0,100]並將它向相反的方向旋轉,然後通過該矢量移動玩家 – 5tingr4y

回答

0

嘗試使用相同方向的玩家偏差。

final int PLAYER_SPEED = 100; 
float angle = MathUtils.random(-50, 50) * delta; // btw, delta is Gdx.graphics.getDeltaTime()? 
camera.rotate(angle); 
if (Gdx.input.isKeyPressed(Input.Keys.W)) { 
    float xOffset = PLAYER_SPEED * sin(toRadians(angle)) * delta; 
    float yOffset = PLAYER_SPEED * cos(toRadians(angle)) * delta; 
    player.setPosition(player.getPosition().x + xOffset, player.getPosition().y + yOffset); 
} 

對於其他方向,必須有其他三角公式。

0

5tingr4y的解決方案爲我工作。

所以,我只是創建了一個向量,並將它向相反的方向旋轉。然後,我通過該Vector移動玩家。

相關問題