Я создаю 2D-игру, в которой игрок может столкнуться с вражескими кораблями. В настоящее время, когда игрок поражает вражеский корабль, вражеский корабль удаляется. Еще одна особенность, с которой я борюсь, заключается в том, что когда два вражеских корабля одновременно поражают игрока, игрок должен быть удален. Есть ли способ сделать это?
Ниже у меня есть класс Collision, который обрабатывает столкновения между игроком и противником.
// if enemy runs into player will return true
public static boolean Collision (EntityEnemy enemyShips, EntityPlayer entP ) {
if (enemyShips.getBounds().intersects(entP.getBounds())) {
return true;
}
return false;
}
// returning two enemies colliding with the player
public static boolean doubleCollision (EntityEnemy enemyShips, EntityPlayer entP ) {
if (enemyShips.getBounds().intersects(entP.getBounds())) {
count ++;
if (count == 2) {
return true;
}
}
return false;
}




Думайте в игре, основанной на поворотах. Когда враг сталкивается с игроком и запускается поток, отвечающий за анализ статуса игры, он будет знать каждое пересечение кораблей, чтобы вы могли видеть все корабли, с которыми у игрока есть пересечения. Мой совет:
Вместо того, чтобы использовать одну проверку для проверки пересечения корабля, верните список всех кораблей с пересечениями. Таким образом, вы можете удалить их все, независимо от того, сколько столкновений у вас есть.
псевдокод:
for(EntityEnemy enemy : enemies) { if (isCollision(...)) collisions.add(enemy); } if (collisions.size() >= 2) player.remove();