Lucrul cu NavMeshAgent în Unity

În Unity, NavMeshAgent este o componentă puternică care vă permite să implementați identificarea căii și navigarea pentru personaje sau obiecte din joc. Utilizează sistemul de navigație încorporat al Unity pentru a calcula traseele pe o suprafață NavMesh. În acest tutorial, vom acoperi elementele de bază ale instalării și utilizării NavMeshAgent cu exemple de cod.

Cerințe preliminare

  • Înțelegerea de bază a Unity interfață și a conceptelor de dezvoltare a jocurilor.
  • Unity instalat pe sistemul dumneavoastră (versiunea 2017 sau o versiune ulterioară).

Configurarea NavMesh în Unity

Înainte de a folosi NavMeshAgent, trebuie să setăm un NavMesh în scena noastră.

  1. Creați o suprafață NavMesh:

    • Accesați 'GameObject -> 3D Object -> NavMesh Surface'. Acest lucru creează un nou GameObject cu o componentă 'NavMeshSurface' atașată.
    • Ajustați setările componentei NavMesh Surface după cum este necesar pentru scena dvs.
  2. Coace NavMesh:

    • Faceți clic pe butonul 'Bake' din componenta 'NavMesh Surface' pentru a genera NavMesh pentru scena dvs.
    • Asigurați-vă că mediul dvs. (teren, obstacole etc.) este configurat corespunzător pentru a permite identificarea precisă a traseului.

Utilizarea NavMeshAgent în Cod

Acum, să scriem un cod pentru a face o mișcare GameObject folosind NavMeshAgent.

Pasul 1: Atașați NavMeshAgent la GameObject

  • Atașați o componentă NavMeshAgent la GameObject în editorul Unity. Puteți face acest lucru selectând GameObject, făcând clic pe 'Add Component' și apoi adăugând 'NavMeshAgent'.

Pasul 2: Scrieți scriptul pentru mișcare

  • Creați un nou script C# (de exemplu, 'PlayerController.cs') și atașați-l la GameObject cu componenta NavMeshAgent. Deschideți scriptul în editorul de cod preferat.
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);
        }
    }
}

Pasul 3: Configurați scena și testați

  • Asigurați-vă că GameObject cu NavMeshAgent și scriptul atașat sunt prezente în scenă.
  • Apăsați Play în editorul Unity și observați comportamentul.
  • Faceți clic oriunde pe suprafața 'NavMesh' și GameObject ar trebui să se miște în acea poziție.

rezumat

În acest tutorial, ați învățat cum să configurați și să utilizați NavMeshAgent pentru căutarea căilor și navigarea în Unity. Urmând acești pași și exemple de cod, puteți implementa mișcarea de bază pentru personaje sau obiecte din joc folosind sistemul de navigare încorporat al Unity.