2

我这样做如下:

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

问题是,如果我一直按空格键,就会创建许多项目符号。我想要的是子弹只有在我按下空格键时才会被射击,而不是在我按下键的时候。

4

2 回答 2

7

LibgdxInputProcessor接口具有接收keyDownkeyUp事件的方法。这可能是您应该使用的。

于 2013-07-03T19:06:04.357 回答
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();
}
...
于 2013-07-03T18:56:25.643 回答