Я новичок в LibGDX и разработке игр. Спрайт продолжает двигаться вверх EVEN, когда Keys.UP
не нажата. Не слишком уверен, почему это происходит, поскольку я пытаюсь заставить его двигаться только в ответ на нажатие Keys.UP
.Sprite постоянно перемещается, когда не должно
Я делаю свой собственный класс вводапроцессора, который будет обрабатывать все входы в игру, а не каждый класс, обрабатывающий одни и те же вещи. Мой основной класс вызывает player.update (дельта-время) каждый кадр благодаря методу рендеринга.
Почему он постоянно перемещается, даже если Keys.UP
не нажат? Разве это не может закончиться при условии ниже? (GameInputProcessor является экземпляром gip
)
Класс игрока:
public void update(float dt){
if (gip.keyDown(Keys.UP)){
this.position.y += this.velocity * dt;
}
GameInputProcessor класс:
public boolean keyDown(int keycode){
switch(keycode){
case Keys.UP:
System.out.println("up being pressed");
return true;
}
return false;
}
Я делал это, но это означает, что я должен буду поместите его в класс моего игрока, который я не хочу делать, я хочу, чтобы это было обработано в классе GameInputProcessor. Но тогда у него должна быть копия экземпляра игрока из основного класса, где он был изначально сделан. Я не слишком уверен, как передать это классу GameInputProcessor. –
Вы всегда можете просто обернуть вызов gdx. Помогает ли моя помощь? – BevynQ
Огромное спасибо, что сработало. Для дизайна OO это хорошая идея? Разве каждый класс работает только с определенными предметами? –