我这样做如下:

...
if (Gdx.input.isKeyPressed(Keys.SPACE)) {
   shoot();
}
...

问题是,如果我不断按空格键,则会创建许多项目符号。我想要的是,仅当我按下SPACE时才发射子弹,而在按下键时不发射子弹。

最佳答案

查看了该库的文档,它似乎没有公开任何其他获得按键的方法(尤其是按下/释放键)。在这种情况下,您可以使用在帧之间持续存在的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();
}
...

关于java - 使用LibGDX按下空格键时如何发射子弹?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17455873/

10-10 09:41