Как использовать NavMesh в Unity: для начинающих

NavMash в Unity

NavMesh (Navigation Mesh) — мощный инструмент в Unity, который позволяет создавать искусственный интеллект для персонажей, способный передвигаться по сцене, избегая препятствий. В этом руководстве мы подробно разберем, как использовать NavMesh с учетом потребностей новичков.


Что такое NavMesh?

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

Основные компоненты, связанные с NavMesh:

  1. NavMesh Surface — область, где персонажи могут перемещаться.
  2. NavMesh Agent — компонент, отвечающий за перемещение персонажа по NavMesh.
  3. NavMesh Obstacle — объекты, которые агент будет обходить.

Подготовка сцены для использования NavMesh

1. Создайте сцену

Создайте новую сцену или откройте уже существующую. Убедитесь, что у вас есть объекты, которые будут выступать в роли земли (например, Plane или Terrain) и препятствий (например, кубы).

2. Установите NavMesh Surface

Для начала убедимся, что в проект добавлена поддержка NavMesh:

  1. В Unity откройте Window > Package Manager.
  2. Найдите и установите пакет AI Navigation (если он ещё не установлен).

Теперь добавим NavMesh Surface:

  1. Выберите объект земли (например, Plane).
  2. В Inspector нажмите Add Component и добавьте NavMesh Surface.
  3. Настройте параметры NavMesh Surface:
    • Agent Radius и Agent Height — задают размеры персонажей.
    • Include Layers — выберите слои, которые должны быть частью NavMesh.
  4. Нажмите Bake, чтобы создать NavMesh.

На сцене появится голубая область, показывающая доступные для передвижения участки.


Добавление персонажа с NavMesh Agent

1. Создайте объект персонажа

Добавьте в сцену 3D-объект, который будет выполнять роль персонажа (например, Capsule).

2. Настройте NavMesh Agent

  1. Выберите объект персонажа.
  2. В Inspector нажмите Add Component и добавьте NavMesh Agent.
  3. Настройте параметры NavMesh Agent:
    • Speed — скорость передвижения.
    • Angular Speed — скорость поворота.
    • Stopping Distance — дистанция, на которой агент остановится перед целью.

3. Добавьте целевую точку

Создайте простой объект-цель:

  1. Добавьте на сцену объект (например, Sphere).
  2. Перетащите объект в область, где он находится на NavMesh.

Скрипт для управления агентом

Теперь напишем скрипт, чтобы агент мог двигаться к цели.

  1. Создайте новый скрипт, назовите его, например, AgentController.
  2. Добавьте следующий код:
using UnityEngine;
using UnityEngine.AI;

public class AgentController : MonoBehaviour
{
    public Transform target; // Ссылка на цель

    private NavMeshAgent agent;

    void Start()
    {
        // Получаем компонент NavMeshAgent
        agent = GetComponent<NavMeshAgent>();
    }

    void Update()
    {
        // Задаем цель для агента
        if (target != null)
        {
            agent.SetDestination(target.position);
        }
    }
}
  1. Присвойте этот скрипт объекту персонажа.
  2. Перетащите объект-цель (Sphere) в поле Target в Inspector.

Теперь персонаж будет автоматически двигаться к цели.


Добавление препятствий (NavMesh Obstacle)

Чтобы сделать сцену реалистичнее, можно добавить препятствия:

  1. Выберите объект, который будет выступать в роли препятствия (например, Cube).
  2. В Inspector нажмите Add Component и добавьте NavMesh Obstacle.
  3. Настройте параметры:
    • Carve — включает вырезание области на NavMesh для препятствия.

Советы для работы с NavMesh

  1. Оптимизация:
    • Избегайте слишком большого количества NavMesh Obstacle, это может замедлить производительность.
    • Используйте “Carve” только если препятствие часто меняет положение.
  2. Динамические изменения NavMesh:
    • Если вы хотите, чтобы NavMesh изменялся в реальном времени, изучите компонент NavMesh Modifier Volume.
  3. Тестирование:
    • Всегда тестируйте движение агента, чтобы убедиться, что он правильно обходит препятствия.

Заключение

NavMesh в Unity — это простой и мощный инструмент для создания навигации персонажей. С его помощью даже новички могут быстро добавить реалистичное поведение искусственного интеллекта в свои проекты. Надеюсь, это руководство поможет вам освоить основы и вдохновит на эксперименты в ваших играх!

Подпишись на Телеграм канал!

Читайте так же:

Дополнение к руководству по использованию NavMesh в Unity

Пример системы инвентаря с управление предметами в Unity