使用LibGDX按空格键时如何射击子弹?

时间:2013-07-03 18:47:08

标签: java libgdx

我这样做了:

...
if (Gdx.input.isKeyPressed(Keys.SPACE)) {
   shoot();
}
...

问题在于,如果我一直按下SPACE,则会创建许多项目符号。我想要的是,只有当我按下SPACE时弹出子弹,而不是在我按下按键时射击。

2 个答案:

答案 0 :(得分:7)

Libgdx InputProcessor界面有接收keyDownkeyUp事件的方法。这可能是你应该使用的。

答案 1 :(得分:4)

查看该库的文档,它似乎没有暴露任何其他获取按键的方式(特别是按键/释放)。在这种情况下,您可以使用在帧之间保留的spaceAlreadyPressed变量自行跟踪保持更改。

...
boolean spaceIsPressed = Gdx.input.isKeyPressed(Keys.SPACE);
if (spaceIsPressed && !spaceAlreadyPressed) {
   shoot();
}
...
spaceAlreadyPressed = spaceIsPressed;

如果输入状态意外更改,使用spaceIsPressed变量可能更安全。


或者,如果您想缩短时间,可以使用逻辑法则缩小到以下值,其中canShoot也会在帧之间保留,初始值为false

...
canShoot = !canShoot && Gdx.input.isKeyPressed(Keys.SPACE);
if (canShoot) {
   shoot();
}
...