2013-07-03 2 views
2

Я сделал это следующим образом:Как снимать пули при нажатии пробела с помощью LibGDX?

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

Проблема заключается в том, что если я продолжу нажав ПРОБЕЛ созданы много пуль. Я хочу, чтобы пуля была снята, только когда я нажимаю SPACE, но не пока я нажимаю клавишу.

ответ

4

Посмотрел документацию для библиотеки, и, похоже, он не обнаруживает другого способа получения нажатий клавиш (в частности, нажатия клавиш/отпускания). В таком случае вы можете отслеживать изменения самих изменений с помощью переменной spaceAlreadyPressed, которая сохраняется между кадрами.

... 
boolean spaceIsPressed = Gdx.input.isKeyPressed(Keys.SPACE); 
if (spaceIsPressed && !spaceAlreadyPressed) { 
    shoot(); 
} 
... 
spaceAlreadyPressed = spaceIsPressed; 

Это может быть безопаснее использовать spaceIsPressed переменную в случае, если входное состояние изменяется неожиданно.


В качестве альтернативы, если вы хотите, чтобы сделать его короче, вы можете использовать логические законы сводятся к следующему, где canShoot также сохраняется между кадрами и имеет начальное значение false.

7

Libgdx InputProcessor интерфейс имеет методы для приема keyDown и keyUp события. Вероятно, это то, что вы должны использовать.

+0

Да, это намного лучше. – Zong

Смежные вопросы