我这样做如下:
...
if (Gdx.input.isKeyPressed(Keys.SPACE)) {
shoot();
}
...
问题是,如果我一直按空格键,就会创建许多项目符号。我想要的是子弹只有在我按下空格键时才会被射击,而不是在我按下键的时候。
LibgdxInputProcessor
接口具有接收keyDown
和keyUp
事件的方法。这可能是您应该使用的。
查看了该库的文档,它似乎没有公开任何其他获取按键的方式(特别是按键/释放)。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();
}
...