Область патрулирования юнитов

Почти в любых играх, неважно какого жанра, где есть стычки с вражескими юнитами, парой необходимо создавать области, в которых эти самые юниты могут свободно перемещаться. Именно свободное перемещение юинта, в рамках присвоенной ему области. А для создания иллюзии «живого» поведения юнитов, место в рамках области выбирается рандомно, кроме этого, добавлен рандомный период времени, после которого юнит выбирает точку, дополнительно, добавлен еще и процент, настраиваемый вероятности. Например, можно настроить что в периоде от пяти и до десяти секунд, с вероятностью в двадцать процентов, юнит может сделать свой ход.


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

Стоит обратить внимание, на некоторые настройки области юнитов:

Область патрулирования юнитов

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

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

Поскольку используется на юнитах используется компонент NavMeshAgent нужно запекать карту навигации, простой пример можно посмотреть тут https://null-code.ru/scripts/11-poisk-puti-navigaciya-ii.html ничего сложного там нет.

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

Скачать скрипты и демо проект:
https://www.patreon.com/posts/23415151
Тестировалось на: Unity 2018.3.0
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
  • Яндекс.Метрика