Jobber med NavMeshAgent i Unity

I Unity er NavMeshAgent en kraftig komponent som lar deg implementere stifinning og navigering for karakterer eller objekter i spillet ditt. Den bruker Unitys innebygde navigasjonssystem for å beregne stier på en NavMesh-overflate. I denne opplæringen vil vi dekke det grunnleggende om å sette opp og bruke NavMeshAgent med kodeeksempler.

Forutsetninger

  • Grunnleggende forståelse av Unity grensesnitt og spillutviklingskonsepter.
  • Unity installert på systemet ditt (versjon 2017 eller nyere).

Setter opp NavMesh i Unity

Før vi dykker inn i å bruke NavMeshAgent, må vi sette opp en NavMesh i scenen vår.

  1. Lag en NavMesh-overflate:

    • Gå til 'GameObject -> 3D Object -> NavMesh Surface'. Dette oppretter et nytt GameObject med en 'NavMeshSurface'-komponent tilknyttet.
    • Juster innstillingene til NavMesh Surface-komponenten etter behov for scenen din.
  2. Bake NavMesh:

    • Klikk på 'Bake'-knappen i 'NavMesh Surface'-komponenten for å generere NavMesh for scenen din.
    • Sørg for at miljøet ditt (terreng, hindringer osv.) er riktig konfigurert for å tillate nøyaktig stifinning.

Bruker NavMeshAgent i kode

La oss nå skrive litt kode for å gjøre et GameObject-trekk ved å bruke NavMeshAgent.

Trinn 1: Fest NavMeshAgent til GameObject

  • Fest en NavMeshAgent-komponent til GameObject i Unity-editoren. Du kan gjøre dette ved å velge GameObject, klikke 'Add Component', og deretter legge til 'NavMeshAgent'.

Trinn 2: Skriv manus for bevegelse

  • Lag et nytt C#-skript (f.eks. 'PlayerController.cs') og fest det til GameObject med NavMeshAgent-komponenten. Åpne skriptet i ditt foretrukne koderedigeringsprogram.
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);
        }
    }
}

Trinn 3: Sett opp scene og test

  • Sørg for at GameObject med NavMeshAgent og det vedlagte skriptet er tilstede i scenen.
  • Trykk Play i Unity Editor og observer oppførselen.
  • Klikk hvor som helst på 'NavMesh'-overflaten, og GameObject skal bevege seg mot den posisjonen.

Sammendrag

I denne opplæringen lærte du hvordan du setter opp og bruker NavMeshAgent for stifinning og navigering i Unity. Ved å følge disse trinnene og kodeeksemplene kan du implementere grunnleggende bevegelse for karakterer eller objekter i spillet ditt ved å bruke Unitys innebygde navigasjonssystem.

Foreslåtte artikler
Hvordan lage en FPS med AI-støtten i Unity
Implementering av NavMesh Agent i Unity
Lag en NPC som følger spilleren i Unity
Hvordan lage en AI av en hjort i enhet
Gjennomgang av Unity Asset Store-pakken – Zombie AI System
Implementering av AI av en fiende i Unity
Unity Legg til fiender til en 2D-plattform