在带有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);
}
}
谢谢你心疼!这正是我错过的。 –