我做到了,如下所示:如何在使用LibGDX按下空格键时拍摄子弹?
...
if (Gdx.input.isKeyPressed(Keys.SPACE)) {
shoot();
}
...
的问题是,如果我继续按SPACE多少发子弹被创建。我想要的是,只有当我按下SPACE键时,子弹才会被拍摄,而当按下键时不会。
我做到了,如下所示:如何在使用LibGDX按下空格键时拍摄子弹?
...
if (Gdx.input.isKeyPressed(Keys.SPACE)) {
shoot();
}
...
的问题是,如果我继续按SPACE多少发子弹被创建。我想要的是,只有当我按下SPACE键时,子弹才会被拍摄,而当按下键时不会。
看了一下库的文档,它似乎没有公开任何其他方式获取按键(特别是按下键/释放)。在这种情况下,您可以使用spaceAlreadyPressed
变量自行保留更改,该变量在帧之间保持不变。
...
boolean spaceIsPressed = Gdx.input.isKeyPressed(Keys.SPACE);
if (spaceIsPressed && !spaceAlreadyPressed) {
shoot();
}
...
spaceAlreadyPressed = spaceIsPressed;
这可能是更安全的情况下,使用一个可变spaceIsPressed
意外的输入状态变化。
另外,如果你想让它更短,您可以使用逻辑的法律,以减少对以下内容,其中canShoot
也仍然存在帧之间并具有false
的初始值。
Libgdx InputProcessor
接口有方法来接收keyDown
和keyUp
事件。这可能是你应该使用的。
是的,这样好多了。 – Zong