@yraiv

Как определить расстояние между несколькими объектами в 2d?

Игра в жанре TD. Нужно каким-то способом заставить стрелять башни в объект, который ближе к финишу. Пробовал сначала захватывать объект и пока он не умрёт - бить его. Появились минусы этого способа. Дальше решил сделать list с врагами и записывать их, когда они входят в зону действия и убирать из списка, когда они его покидают/погибают, но если объект вошёл, например, вторым, а третий его обогнал, когда уже был в зоне действия башни, то после убийства первого объекта, башня переключится на тот, который вошёл вторым, хотя третий объект уже находится ближе к финишу и это явная недоработка.
Поэтому вопрос, как можно реализовать подсчёт пути?
Игра 2д, дорога кривая, где-то вверх, где-то вниз, разные раунды и соответственно разные дороги. Как реализуют такое вообще, может кто делал подобное?
  • Вопрос задан
  • 178 просмотров
Решения вопроса 1
@Ezekiel4
Охотник на пиратов и сборщик монолитов
Ваши монстры идут по вейпоинтам в определённом порядке. Это значит, что у каждого монстра должно быть состояние, которое говорит о том, куда сейчас монстр стремится. Если предположить, что вейпоинты у вас в массиве, то состояние - это индекс следующего вейпоинта. В таком случае вы можете брать всех монстров с максимальным индексом, и, пользуясь Vector3.Distance, определять отдалённость от целевого вейпоинта всех проверяемых монстров. Затем выбрать наименьшее из них.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы