我的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
。
现在的情况:
期望的情况:
我很想听听你对此事的看法,欢呼!
答案 0 :(得分:1)
你在这里遇到的问题是,keyDown()
只被调用一次,因此你的玩家ID只能移动1个单位。你需要做的是,创建一些变量,例如isMovingRight
,并在每次游戏更新时检查它。
游戏课程:
public final void render(float delta) {
...
player.update();
...
}
玩家类:
public void update() {
if(isMovingRight) {
this.setX(this.getX() + 1f);
}
}