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

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


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

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

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

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

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



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

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

Скачать скрипты и демо проект:
Внимание! Посетители, находящиеся в группе Гости, не могут скачивать файлы.
Тестировалось на: Unity 2018.3.0

Комментариев 2

Офлайн
Crysis001 27 июля 2019
Отличная задумка, но как сделать, так, что бы игрока обнаруживали спереди, а не возле врага на определенном расстоянии. И жаль конечно, что теперь стало платно, нельзя посмотреть скрипт
Офлайн
Light 27 июля 2019
Crysis001, чтобы видел спереди надо добавить несколько лучей, получится, когда игрок попадет в триггер юнита, включится рейкаст, который будет смотреть вперед и искать цель, а если игрок покинет радиус поиска, рейкаст отключится и снова активируется триггер.
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
  • Яндекс.Метрика