2016-06-01 35 views
0

我在InputAdapter下面這段代碼:在帶有Scene2D的LibGDX中,如何在按下按鈕時繼續向右走?

... 
@Override 
public boolean keyDown (int keycode) { 
    if (keycode == Keybindings.KEY_RIGHT) this.player.right(); 
    return super.keyDown(keycode); 
} 

@Override 
public boolean keyUp (int keycode) { 
    if (keycode == Keybindings.KEY_RIGHT) this.player.stopMovingRight(); 
    return super.keyUp(keycode); 
} 
... 

而且我PlayerActor類負責right()stopMovingRight()

... 
public void right() { 
    this.right = true; 
    this.setX(this.getX() + 1f); 
} 

public void stopMovingRight() { 
    this.right = false; 
} 
... 

現在,當我運行應用程序,我PlayerActor舉動只是當按下KEY_RIGHT鍵(鍵盤上的「D」鍵)時,單位爲1。問題是,我反而想連續移動PlayerActor而我按下鍵。現在

現狀:

  • 按住鍵 - >動(只),1個單位的權利
  • 我們的重點轉到 - >什麼也沒有發生

理想狀況:

  • 按住鍵 - >連續向右移動1個單位
  • 放開鑰匙 - >停止向右移動

我很想聽聽你對這件事的想法,歡呼!

回答

1

你在這裏遇到的問題是keyDown()只被調用一次,因此你的玩家ID只能移動1個單位。你需要做的是創建一些變量,例如isMovingRight,並在每次更新遊戲時檢查它。

遊戲類:

public final void render(float delta) { 
... 
    player.update(); 
... 
} 

Player類:

public void update() { 
    if(isMovingRight) { 
     this.setX(this.getX() + 1f); 
    } 
} 
+0

謝謝你心疼!這正是我錯過的。 –

相關問題