2016-01-10 2 views
0

Я делаю 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: Я ПОЛУЧИЛ РАБОТУ! В принципе, вместо того, чтобы порождать игрока, который я сделал с одного из моих классов, я породил его в другом! Казалось, что это работает;)

+0

Вы можете сказать нам, где называется tick()? и что делает clamp()? – SomeDude

+0

@svasa tick вызывается каждые 1/60 секунды. Зажим останавливает его от выхода за пределы экрана. – Blockhead7360

ответ

0

Похоже, проблема заключается в том, что вы обновляете x и y, но сразу же после этого вы устанавливаете их в нечто другое с помощью clamp().

public void tick(){ 
    x += velX; 
    y += velY; 

    y = Stardust.clamp(y, 0, Stardust.HEIGHT - 64); // This (might) be your problem 
    x = Stardust.clamp(x, 0, Stardust.WIDTH - 32); 
} 

Не зная, что clamp() делает я не могу сказать, что это наверняка вопрос, но представляется вероятным.

+0

Я не думаю, что зажим беспокоит его. Это работало до этого и по какой-то причине сейчас не работает в этом классе. @Kironide – Blockhead7360

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

  • Нет связанных вопросов^_^