我这样做了:
...
if (Gdx.input.isKeyPressed(Keys.SPACE)) {
shoot();
}
...
问题在于,如果我一直按下SPACE,则会创建许多项目符号。我想要的是,只有当我按下SPACE时弹出子弹,而不是在我按下按键时射击。
答案 0 :(得分:7)
Libgdx InputProcessor
界面有接收keyDown
和keyUp
事件的方法。这可能是你应该使用的。
答案 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();
}
...