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

时间:2016-06-01 07:16:55

标签: java libgdx scene2d

我的InputAdapter中有以下代码:

...
@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键(键盘上的' D'键)时,KEY_RIGHT仅移动1个单位。问题是,当我按下键时,我想连续移动PlayerActor

现在的情况:

  • 按住键 - >向右移动(仅)1个单元
  • 放开键 - >没有任何反应

期望的情况:

  • 按住键 - >连续向右移动1个单元
  • 放开键 - >停止向右移动

我很想听听你对此事的看法,欢呼!

1 个答案:

答案 0 :(得分:1)

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

游戏课程:

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

玩家类:

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