2015-01-13 5 views
0

Я пишу сценарий, который заставит игроков HP уменьшаться с интервалом, если они находятся в пределах диапазона предмета/монстра/лавы, что бы это ни было. У меня есть обнаружение просто отлично, но я, похоже, не получаю интервал для запуска. Я знаю, это, вероятно, потому, что я создаю новый TimerTask, как я рендеринга, но я не могу понять это.Событие таймера таймера не работает

  for(Monster monster : monsters) { 
      renderer.processEntity(monster); 
      if(player.withinDistance(10, monster.getPosition())) 
      timer.scheduleAtFixedRate(new TimerTask() { 

       @Override 
       public void run() { 
        System.out.println("tick"); 
        Player.PLAYER_HEALTH -= 10; 

       } 

      }, 2000, 2000); 
     } 

Так что для всех монстров, он проверяет свои позиции, если вы рядом с ним открывает задание таймера, который должен тикать каждые 2 секунды, пока условие истинно. Как я могу сделать эту работу должным образом? Является ли задача таймера оптимальной для этой ситуации?

ответ

0

Проблема заключается в том, что вы обновляете статическое свойство PLAYER_HEALTH класса . Класс игрока. Вы должны обновить экземпляр игрока !

 for(Monster monster : monsters) { 
     renderer.processEntity(monster); 
     if(player.withinDistance(10, monster.getPosition())) 
     timer.scheduleAtFixedRate(new TimerTask() { 

      @Override 
      public void run() { 
       System.out.println("tick"); 
       player.decreaseHealth(10); // Use the instance 

      } 

     }, 2000, 2000); 
    } 

Кроме того, если ваша программа завершена, TimerTask также закончится. Убедитесь, что ваша программа все еще запущена.

+0

Спасибо, что помогает и может быть одной проблемой, но мой «тик» не показывался в первую очередь, поэтому я думаю, что он должен что-то сделать с тем, как тик зацикливается. Эта функция находится в моей основной петле игры –

+0

Должен ли я хранить такие вещи, как здоровье, положение, деньги, ману, exp и свойства таких как статические ссылки? Или они должны быть нормальными глобальными, которые я устанавливаю и сохраняю каждый раз, когда открываю программу? U –

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