在带有Scene2D的LibGDX中,如何在按下按钮时继续向右走?

在带有Scene2D的LibGDX中,如何在按下按钮时继续向右走?

问题描述:

我在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个单位
  • 放开钥匙 - >停止向右移动

我很想听听你对这件事的想法,欢呼!

你在这里遇到的问题是keyDown()只被调用一次,因此你的玩家ID只能移动1个单位。你需要做的是创建一些变量,例如isMovingRight,并在每次更新游戏时检查它。

游戏类:

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

Player类:

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

谢谢你心疼!这正是我错过的。 –