Я пытаюсь заставить спрайт двигаться, и, несмотря на отсутствие ошибок, он все равно не перемещает спрайт, хотя я не могу найти с ним никаких проблем. Это может быть что-то, что мне не хватает или не должно быть, но любые советы приветствуются
Я пытался изменить коды клавиш (VK_RIGHT и т. д.), но ни одно из изменений, похоже, не повлияло на него и не заставило его работать. Я использую рабочее пространство eclipse, поэтому я не уверен, что это может быть так.
Страница игры
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_D) player.right = true;
if (e.getKeyCode() == KeyEvent.VK_A) player.left = true;
if (e.getKeyCode() == KeyEvent.VK_W) player.up = true;
if (e.getKeyCode() == KeyEvent.VK_S) player.down = true;
Страница игрока
public boolean right,left,up,down;
private int speed = 4;
public Player(int x,int y) {
setBounds(x,y,32,32);
}
public void tick() {
if (right)x+=speed;
if (left)x-=speed;
if (up)y-=speed;
if (down)y+=speed;
}
Я ожидаю, что игрок будет двигаться по экрану в направлении, соответствующем направлению нажатия клавиши, но ничего не происходит, и он вообще не движется
Ваш класс реализует этот интерфейс public interface KeyListener
Вы вызываете тик ()?
Изменение ваших переменных недостаточно. Вам нужно будет перерисовать «экранный мир», чтобы отразить новое изменение состояния игры / значения переменных.
Когда вы устанавливаете один на true, вам нужно установить 3 других на false
Я попытался установить их в false, и ничего не изменилось, я попытался вызвать тик, но он сказал, что в игре не может быть 2 экземпляров тика, и установка остальных 3 в false ничего не меняет.
Также что подразумевается под перерисовкой "экранного мира"




Вы когда-нибудь устанавливали поля
left,right,up,downвfalse?