Java 使用LibGDX按下空格键时如何射击子弹?
我是这样做的:Java 使用LibGDX按下空格键时如何射击子弹?,java,libgdx,Java,Libgdx,我是这样做的: ... if (Gdx.input.isKeyPressed(Keys.SPACE)) { shoot(); } ... 问题是,如果我一直按空格键,就会产生很多子弹。我想要的是,子弹只有在我按下空格键时才会射出,而不是在我按下键时射出。查看了库的文档,它似乎没有暴露任何其他获得按键的方式(特别是按下/释放键)。在这种情况下,您可以使用在帧之间保持不变的spaceAlreadyPressed变量来跟踪自己的更改 ... boolean spaceIsPressed = G
...
if (Gdx.input.isKeyPressed(Keys.SPACE)) {
shoot();
}
...
问题是,如果我一直按空格键,就会产生很多子弹。我想要的是,子弹只有在我按下空格键时才会射出,而不是在我按下键时射出。查看了库的文档,它似乎没有暴露任何其他获得按键的方式(特别是按下/释放键)。在这种情况下,您可以使用在帧之间保持不变的
spaceAlreadyPressed
变量来跟踪自己的更改
...
boolean spaceIsPressed = Gdx.input.isKeyPressed(Keys.SPACE);
if (spaceIsPressed && !spaceAlreadyPressed) {
shoot();
}
...
spaceAlreadyPressed = spaceIsPressed;
如果输入状态意外更改,使用spaceIsPressed
变量可能更安全
或者,如果您想将其缩短,可以使用逻辑法则简化为以下内容,其中
canshot
也会在帧之间持续存在,并且初始值为false
...
canShoot = !canShoot && Gdx.input.isKeyPressed(Keys.SPACE);
if (canShoot) {
shoot();
}
...
Libgdx
InputProcessor
接口具有接收keyDown
和keydup
事件的方法。这可能是您应该使用的