#java #eclipse #collision #bounds
#java #eclipse #столкновение #границы
Вопрос:
Я создаю 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;
}
Комментарии:
1. псевдокод:
for(EntityEnemy enemy : enemies) { if (isCollision(...)) collisions.add(enemy); } if (collisions.size() >= 2) player.remove();
Ответ №1:
Мышление в игре основано на поворотах. Когда враг нападает на игрока, и поток, ответственный за анализ состояния игры, запускается, он будет знать о каждом пересечении кораблей, чтобы вы могли видеть каждый корабль, с которым пересекается игрок. Мой совет таков:
Вместо того, чтобы использовать единственную проверку для проверки того, был ли корабль пересечен, верните список всех кораблей с пересечениями. Таким образом, вы можете удалить их все, независимо от того, сколько у вас столкновений.