我正在尝试做游戏。当你按下“A”时,我的角色应该向前跳一个方格,但每次按下“A”键时他都会跳7个方格。有人知道怎么把它限制在1?我知道它为什么会发生,但直到现在我才找到任何方法。
我的“玩家”类代码,即我的角色类:
ArrayList<Square> squareList = new ArrayList<Square>();
int count = 0;
Vector2 position = new Vector2(50,50);
if(Gdx.input.isKeyPressed(Keys.A))
{
j = j + 1;
position.x = squareList.get(i).getPosition().x;
position.y = squareList.get(i).getPosition().y;
i++;
}
答案 0 :(得分:2)
我认为这样的东西会起作用:
if (Gdx.input.isKeyPressed(Input.Keys.P)) {
// Use a helper so that a held-down button does not continuously switch between states with every tick
if (pauseHelper) {
if (isPaused) {
Util.toConsole ("No longer paused");
isPaused = false;
}
else {
Util.toConsole ("Now paused");
isPaused = true;
}
pauseHelper = false;
}
}
else {
pauseHelper = true;
}
(见http://pastebin.com/vsVWeHj6)
但是,从技术上讲,您需要实施LibGDX提供的InputProcessor
来处理按键操作。
答案 1 :(得分:2)
试试这个:
if (Gdx.input.isKeyJustPressed(Keys.A)) {
System.out.println("KEY PRESSED");
}
按键只会运行一次,但如果按住它只会触发一次。测试了它。
答案 2 :(得分:1)
如果您不想实现InputProcessor,可以采用另一种方法:
//Member variable:
boolean mAKeyWasPressed = false;
//In method:
boolean aKeyIsPressed = Gdx.input.isKeyPressed(Keys.A);
if (aKeyIsPressed && !mAKeyWasPressed)
//Just pressed. Do stuff here.
}
mAKeyWasPressed = aKeyIsPressed;