В этой статье мы разберем простой способ, с помощью которого можно достаточно быстро научить игровые объекты искать путь, то есть перемещаться к цели минуя препятствия. Для этого тебе потребуется скачать проект с нужными компонентами — NavMesh.
Подготовка
Для начала открой скачанный проект, создай новую сцену и собери в ней простой прототип из примитивных объектов.


Для настройки NavMesh нам понадобится окно Навигация (англ. Navigation), открыть его можно так: Window → Navigation. Открывшееся окно будет справа (там где обычно находиться окно Инспектор). В нем тебе понадобиться вкладка Agents:

Есть несколько стандартных агентов, ты можешь их удалить или добавить свои. Каждый агент имеет:
- Name — имя, так мы будем различать объекты на сцене: какие из них должны двигаться как огр, а какие как человек.
- Radius и Height — радиус и высота, то есть габариты агента.
- Step Height — высота шага агента.
- Max Slope — максимальный угол подъема, например, на холм.
На картинке схематично показаны все эти параметры.
Теперь добавь объекту Creep компонент Nav Mesh Agent.

Вот какие настройки тебе понадобятся:
- Agent Type — здесь можно выбрать тип агента: огр или человек? 🙂
- Speed — скорость.
- Angular Speed — скорость разворота.
- Acceleration — ускорение.
- Stop Distance — расстояние до цели, когда Creep должен остановиться.
Напишем простейший скрипт для Creep:
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.AI; // подключаем к скрипту AI public class Move : MonoBehaviour { [SerializeField] NavMeshAgent agent; // подключаем к нашему скрипту NavMeshAgent [SerializeField] Transform target; // здесь мы будем указывать цель void Start () { agent = GetComponent(); // команда автоматически ищет компонент NavMeshAgent у нашего объекта agent.SetDestination(target.position); // команда для нашего объекта, которая заставляет его перемещаться } }
Последнее, что нужно сделать — разметить уровень. Чтобы было удобнее, создай пустой объект и сделай его родительским для всех объектов, по которым можно будет перемещаться.

Теперь добавь этому пустому объекту компонент Nav Mesh Surface. Выбери тип агента (Agent Type), который ты используешь, в параметре Collect Objects выбери Children, чтобы разметить только дочерние объекты, а в параметре Use Geometry выбери Physics Collider, чтобы использовать коллайдеры. Теперь жми кнопку Bake.

Готово👍 Теперь ты умеешь делать простой AI. Поздравляем✨
