Робота з NavMeshAgent в Unity

У Unity NavMeshAgent є потужним компонентом, який дозволяє реалізувати пошук шляху та навігацію для персонажів або об’єктів у вашій грі. Він використовує вбудовану систему навігації Unity для обчислення шляхів на поверхні NavMesh. У цьому посібнику ми розглянемо основи налаштування та використання NavMeshAgent із прикладами коду.

передумови

Налаштування NavMesh в Unity

Перш ніж ми зануримось у використання NavMeshAgent, нам потрібно налаштувати NavMesh у нашій сцені.

  1. Створіть поверхню NavMesh:

    • Перейдіть до 'GameObject -> 3D Object -> NavMesh Surface'. Це створює новий GameObject із приєднаним компонентом 'NavMeshSurface'.
    • Налаштуйте параметри компонента NavMesh Surface відповідно до вашої сцени.
  2. Запекти NavMesh:

    • Натисніть кнопку 'Bake' у компоненті 'NavMesh Surface', щоб створити NavMesh для вашої сцени.
    • Переконайтеся, що ваше середовище (рельєф, перешкоди тощо) налаштовано належним чином, щоб забезпечити точне визначення шляху.

Використання NavMeshAgent у коді

Тепер давайте напишемо код, щоб зробити рух GameObject за допомогою NavMeshAgent.

Крок 1: Приєднайте NavMeshAgent до GameObject

  • Прикріпіть компонент NavMeshAgent до вашого GameObject у редакторі Unity. Ви можете зробити це, вибравши GameObject, натиснувши 'Add Component', а потім додавши 'NavMeshAgent'.

Крок 2: Напишіть сценарій руху

  • Створіть новий сценарій C# (наприклад, 'PlayerController.cs') і приєднайте його до GameObject за допомогою компонента NavMeshAgent. Відкрийте сценарій у бажаному редакторі коду.
using UnityEngine;
using UnityEngine.AI;

public class PlayerController : MonoBehaviour
{
    private NavMeshAgent navMeshAgent;

    void Start()
    {
        navMeshAgent = GetComponent<NavMeshAgent>();
    }

    void Update()
    {
        // Check for player input or any other conditions to trigger movement
        if (Input.GetMouseButton(0)) // Example: Move towards mouse click position
        {
            MoveToClickPosition();
        }
    }

    void MoveToClickPosition()
    {
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;

        if (Physics.Raycast(ray, out hit))
        {
            // Move NavMeshAgent towards the clicked position
            navMeshAgent.SetDestination(hit.point);
        }
    }
}

Крок 3: Налаштуйте сцену та перевірте

  • Переконайтеся, що ваш GameObject з NavMeshAgent і доданим сценарієм присутні на сцені.
  • Натисніть Play у редакторі Unity і спостерігайте за поведінкою.
  • Клацніть будь-де на поверхні 'NavMesh', і GameObject повинен переміститися до цієї позиції.

Резюме

У цьому посібнику ви дізналися, як налаштувати та використовувати NavMeshAgent для пошуку шляху та навігації в Unity. Дотримуючись цих кроків і прикладів коду, ви можете реалізувати базові рухи для персонажів або об’єктів у вашій грі за допомогою вбудованої системи навігації Unity.

Рекомендовані статті
Впровадження NavMesh Agent в Unity
Як створити FPS із підтримкою AI в Unity
Створіть NPC, який слідує за гравцем в Unity
Як створити AI оленя в Unity
Огляд пакета Unity Asset Store Package - Zombie AI System
Впровадження ШІ ворога в Unity
Unity Додайте ворогів у 2D-платформер