Lavorare con NavMeshAgent in Unity

In Unity, NavMeshAgent è un potente componente che ti consente di implementare la ricerca del percorso e la navigazione per personaggi o oggetti nel tuo gioco. Utilizza il sistema di navigazione integrato di Unity per calcolare i percorsi su una superficie NavMesh. In questo tutorial tratteremo le nozioni di base sulla configurazione e sull'utilizzo di NavMeshAgent con esempi di codice.

Prerequisiti

  • Comprensione di base di Unity interfaccia e dei concetti di sviluppo del gioco.
  • Unity installato sul tuo sistema (versione 2017 o successiva).

Configurazione di NavMesh in Unity

Prima di approfondire l'uso di NavMeshAgent, dobbiamo impostare un NavMesh nella nostra scena.

  1. Creare una superficie NavMesh:

    • Vai a 'GameObject -> 3D Object -> NavMesh Surface'. Questo crea un nuovo GameObject con un componente 'NavMeshSurface' collegato.
    • Regola le impostazioni del componente NavMesh Surface secondo necessità per la tua scena.
  2. Cuocere NavMesh:

    • Fai clic sul pulsante 'Bake' nel componente 'NavMesh Surface' per generare il NavMesh per la tua scena.
    • Assicurati che il tuo ambiente (terreno, ostacoli, ecc.) sia configurato correttamente per consentire un'accurata ricerca del percorso.

Utilizzo di NavMeshAgent nel codice

Ora scriviamo del codice per eseguire uno spostamento GameObject utilizzando NavMeshAgent.

Passaggio 1: collega NavMeshAgent a GameObject

  • Collega un componente NavMeshAgent al tuo GameObject nell'editor Unity. Puoi farlo selezionando GameObject, facendo clic su 'Add Component' e quindi aggiungendo 'NavMeshAgent'.

Passaggio 2: scrivere uno script per il movimento

  • Crea un nuovo script C# (ad esempio, 'PlayerController.cs') e collegalo a GameObject con il componente NavMeshAgent. Apri lo script nel tuo editor di codice preferito.
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);
        }
    }
}

Passaggio 3: impostare la scena e testare

  • Assicurati che il tuo GameObject con NavMeshAgent e lo script allegato siano presenti nella scena.
  • Premi Gioca nell'editor Unity e osserva il comportamento.
  • Fai clic in un punto qualsiasi della superficie 'NavMesh' e GameObject dovrebbe spostarsi verso quella posizione.

Riepilogo

In questo tutorial hai imparato come configurare e utilizzare NavMeshAgent per l'individuazione del percorso e la navigazione in Unity. Seguendo questi passaggi ed esempi di codice, puoi implementare il movimento di base per personaggi o oggetti nel tuo gioco utilizzando il sistema di navigazione integrato di Unity.

Articoli suggeriti
Come realizzare un FPS con il supporto AI in Unity
Implementazione dell'agente NavMesh in Unity
Crea un NPC che segue il giocatore in Unity
Come creare un'intelligenza artificiale di un cervo in unità
Revisione del pacchetto Unity Asset Store - Sistema di intelligenza artificiale Zombie
Implementare l'intelligenza artificiale di un nemico in Unity
Unity aggiunge nemici a un platform 2D