A * поиск пути для динамических препятствий и блокирования игрока?

11

Привет, я создаю TD в Unity 5 и мне нужна помощь с моим Pathfinding.

Я собираюсь использовать Arons A * pathfinding для моего AI, который позволяет мне использовать динамические объекты и обновлять путь во время выполнения. Однако в моей игре я хочу, чтобы игрок мог блокировать миньонов с помощью специальных турелей, которые заставят миньонов атаковать «башню блоков» вместо того, чтобы пройти к месту назначения.

Как я мог сделать что-то подобное?

Изображение для большей наглядности: введите описание изображения здесь

Grimbox
источник

Ответы:

22

Я не смотрел на конкретную реализацию A * Аарона, но с обычным A * вы могли бы включить «башню блока» в качестве проходимой местности, но обновить эвристику так, чтобы «стоимость» была намного выше, чем у обычной плитки (так, чтобы ИИ оценит, проще ли уничтожить блок и продолжить или просто пройти по пути, который не заблокирован).

Затем вам нужно будет обновить свой ИИ, чтобы, когда враг пытался перейти от обычной плитки к плитке «блок-башни», он автоматически атаковал до уничтожения.

JackFrost
источник
8
+1 Я бы добавил, что вы можете рассчитывать стоимость блокирующей башни в зависимости от того, сколько времени понадобится число Х и тип миньонов, чтобы уничтожить ее, если есть какая-либо разница. Предустановленная стоимость башни может быть неточной, если миньонам самого низкого уровня требуется 5 секунд, чтобы уничтожить ее, но один суперминион может сделать это за 1 секунду.
Нечеткая логика
0

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

Если вы хотите, чтобы миньоны атаковали башни только тогда, когда нет альтернативных путей, тогда, когда путь заблокирован и A * вызывается для вычисления другого пути, если он возвращает ноль, тогда вы можете заставить врагов найти все башни для насмешек и цель их.

Leggy7
источник