Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用LibGDX按下空格键时如何射击子弹?_Java_Libgdx - Fatal编程技术网

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
事件的方法。这可能是您应该使用的