Я делаю Java-игру, но у меня есть проблема. Мой объект не двигается:Объект не перемещается?
Вот код:
public void keyPressed(KeyEvent e){
int key = e.getKeyCode();
for (int i = 0; i < handler.object.size(); i++){
GameObject temp = handler.object.get(i);
if (temp.getC() == Char.StarPlayer && Stardust.keyEnabled){
System.out.println("test");
System.out.println(temp.getY());
if (key == KeyEvent.VK_W) temp.setY(-5);
if (key == KeyEvent.VK_A) temp.setVelY(5);
if (key == KeyEvent.VK_S) temp.setVelX(-5);
if (key == KeyEvent.VK_D) temp.setVelX(5);
}
}
}
В принципе, я получаю никакого «GameObject», который имеет символьный идентификатор «StarPlayer» (Char.StarPlayer), прикрепленный к нему, а также когда клавиатура включена (keyEnabled). Кажется, он хорошо работает, когда он попадает сюда, поскольку он выводит «тест» и значение Y объекта в консоль. Однако объект фактически не перемещается. Каждый раз, когда я нажимаю на него, объект должен быть на другом уровне Y, но консоль постоянно говорит то же самое число каждый раз, когда я его нажимаю. Я не знаю, что происходит! Я устанавливаю скорость, и, как вы можете видеть в этом коде «StarPlayer»:
public void tick(){
x += velX;
y += velY;
y = Stardust.clamp(y, 0, Stardust.HEIGHT - 64);
x = Stardust.clamp(x, 0, Stardust.WIDTH - 32);
}
скорость добавляется к фактическому значению х, чтобы заставить его двигаться. Он работал раньше, но по какой-то причине он сейчас не работает.
Пожалуйста, помогите как можно скорее;) - Blockhead7360
EDIT: Зажим не прерывает это (я не думаю). Это же работал раньше, и по каким-то причинам сейчас не работает ....
Я думаю, здесь есть зажим, если вам это нужно:
public static int clamp(int var, int min, int max){
if (var >= max){
return var = max;
}else if (var <= min){
return var = min;
}else return var;
}
EDIT 2: Я пытался вынимая зажим и его все еще не двигался?!?
РЕДАКТИРОВАТЬ 3: Я ПОЛУЧИЛ РАБОТУ! В принципе, вместо того, чтобы порождать игрока, который я сделал с одного из моих классов, я породил его в другом! Казалось, что это работает;)
Вы можете сказать нам, где называется tick()? и что делает clamp()? – SomeDude
@svasa tick вызывается каждые 1/60 секунды. Зажим останавливает его от выхода за пределы экрана. – Blockhead7360