Когда мой персонаж умирает, я хочу, чтобы все враги были удалены, когда я нажимаю «перезапустить» на экране игры. Но всегда остается 1-2 врагов на поле, когда он перезапускается, я действительно не понимаю.Игра не сбрасывается правильно
Это мой код сброса:
public void resetStats() {
for (int i = 0; i < enemies.size(); i++) {
enemies.remove(i);
}
System.out.print("ENEMIES: " + enemies.size());
enemyCounter = 0;
nbrOfEnemiesKilled = 0;
spawnEnemyTimer = 0;
score.setScore(0);
bulletsFired = 0;
nbrOfBullets = 100;
}
Этот метод вызывается при нажатии на кнопку «перезагрузки» на моем экране игры-над. Все исправляется должным образом, кроме врагов, оставшихся на экране. Я использую игровые состояния, и игра обновляется только в течение gameState=GAMEPLAY
, и я установил gameState=GAMEOVERSCREEN
, когда мой персонаж умирает, это вызывает экран. Мой трек все еще идет в фоновом режиме, в то время как все это происходит, так как я не запускаю свой экран для игры в UI-потоке, поэтому остальные символы будут прыгать назад и вперед на несколько пикселей в этом состоянии.
Я не знаю, как tu запускать мои экраны в пользовательской строке, так как я называю это с View Class
в режиме реального времени.
Я пробовал уничтожить врагов, прежде чем он войдет в новый игровой режим, но это также не устраняет проблему. Я потерялся. Должен ли я запускать свои экраны в пользовательском потоке и приостанавливать цикл игры в этом состоянии? Как мне сделать это из класса view, так как мне нужно Context
для запуска в Ui-thread.
Если какое-либо дальнейшее объяснение требуется, сообщите мне.