Работа с одновременными столкновениями в Java

#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:

Мышление в игре основано на поворотах. Когда враг нападает на игрока, и поток, ответственный за анализ состояния игры, запускается, он будет знать о каждом пересечении кораблей, чтобы вы могли видеть каждый корабль, с которым пересекается игрок. Мой совет таков:

Вместо того, чтобы использовать единственную проверку для проверки того, был ли корабль пересечен, верните список всех кораблей с пересечениями. Таким образом, вы можете удалить их все, независимо от того, сколько у вас столкновений.