Я работаю над проектом (римейк Mario) в Android Studio (на моем ноутбуке) и использую LibGDX. В настоящее время я пытаюсь заставить Марио двигаться в этом уроке, которому я следовал. Итак, я выполнил небольшую отладку в Android Studio и по какой-либо причине он никогда не запускается:
if (Gdx.input.isKeyJustPressed(Input.Keys.UP)) {
Gdx.app.log("Debug", "UP is pressed");
player.b2body.applyLinearImpulse(new Vector2(0, 4f), player.b2body.getWorldCenter(), true);
}
Журнал никогда не печатается в logcat при нажатии UP.
Из того, что я могу найти, у многих людей были проблемы с этой функцией, и я не могу найти способ заставить ее работать. Некоторые форумы даже говорят, что эта функция не работает. Если это так, кто-нибудь знает альтернативный способ кодирования этого? Или есть что-то, что я делаю неправильно / не выяснил с этой функцией?
Кроме того, LibGDX не правильно читает клавиши с моей клавиатуры. Из-за использования аналогичной функции isKeyPressed()
, когда я набираю (например) UP, мне нужно нажать клавишу со стрелкой вправо, чтобы go вверх в игре. Есть ли какое-то решение для этого, или я просто должен согласиться с плохим отображением клавиш из LibGDX?
Для большего контекста, клавиши, которые я нажимаю для управления Mario, с клавиатуры на моем ноутбуке. Игра работает на AVD.
Кроме того, это в моей функции handleInput()
(где вызывается isKeyJustPressed()
):
public void handleInput(float dt) {
// down is mapped to my right arrow key
// up is mapped to my left arrow key
// left is mapped to my up arrow key
if (Gdx.input.isKeyPressed(Input.Keys.RIGHT)) {
Gdx.app.log("Debug", "W is pressed");
player.b2body.applyLinearImpulse(new Vector2(0, 4f), player.b2body.getWorldCenter(), true);
}
if (Gdx.input.isKeyJustPressed(Input.Keys.DOWN) && player.b2body.getLinearVelocity().x <= 2) {
Gdx.app.log("Debug", "R is pressed");
player.b2body.applyLinearImpulse(new Vector2(0.1f, 0), player.b2body.getWorldCenter(), true);
}
if (Gdx.input.isKeyPressed(Input.Keys.UP) && player.b2body.getLinearVelocity().x >= -2) {
Gdx.app.log("Debug", "L is pressed");
player.b2body.applyLinearImpulse(new Vector2(-0.1f, 0), player.b2body.getWorldCenter(), true);
}
}
Это показывает, как мои ключи не совпадают в чтобы заставить Марио двигаться. Кроме того, единственная первая функция не работает. Предполагается, что эти функции предназначены для клавиатуры на устройстве android?
Дополнительная информация: handleInput()
вызывается в update()
update
вызывается в render
Каждая из этих трех функций принимает дельта-время с плавающей точкой
Я работаю Android Studio версия 3.6.3 и номер сборки AI-192.7142.36.36.6392135.
Дайте мне знать, если что-нибудь еще будет полезно для ответа на этот вопрос. Спасибо!