Arbejder med NavMeshAgent i Unity

I Unity er NavMeshAgent en kraftfuld komponent, der giver dig mulighed for at implementere stifinding og navigation for karakterer eller objekter i dit spil. Den bruger Unitys indbyggede navigationssystem til at beregne stier på en NavMesh-overflade. I denne tutorial dækker vi det grundlæggende i opsætning og brug af NavMeshAgent med kodeeksempler.

Forudsætninger

  • Grundlæggende forståelse for Unity interface og spiludviklingskoncepter.
  • Unity installeret på dit system (version 2017 eller nyere).

Opsætning af NavMesh i Unity

Før vi dykker ned i at bruge NavMeshAgent, skal vi konfigurere en NavMesh i vores scene.

  1. Opret en NavMesh-overflade:

    • Gå til 'GameObject -> 3D Object -> NavMesh Surface'. Dette skaber et nyt GameObject med en 'NavMeshSurface' komponent tilknyttet.
    • Juster indstillingerne for NavMesh Surface-komponenten efter behov for din scene.
  2. Bag NavMesh:

    • Klik på knappen 'Bake' i 'NavMesh Surface'-komponenten for at generere NavMesh til din scene.
    • Sørg for, at dit miljø (terræn, forhindringer osv.) er konfigureret korrekt for at tillade nøjagtig stifinding.

Brug af NavMeshAgent i kode

Lad os nu skrive noget kode for at lave et GameObject-træk ved hjælp af NavMeshAgent.

Trin 1: Vedhæft NavMeshAgent til GameObject

  • Vedhæft en NavMeshAgent-komponent til dit GameObject i Unity-editoren. Du kan gøre dette ved at vælge GameObject, klikke på 'Add Component' og derefter tilføje 'NavMeshAgent'.

Trin 2: Skriv manuskript til bevægelse

  • Opret et nyt C#-script (f.eks. 'PlayerController.cs') og vedhæft det til GameObject med NavMeshAgent-komponenten. Åbn scriptet i din foretrukne kodeeditor.
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);
        }
    }
}

Trin 3: Opsæt scene og test

  • Sørg for, at dit GameObject med NavMeshAgent og det vedhæftede script er til stede i scenen.
  • Tryk på Play i Unity Editor og observer adfærden.
  • Klik hvor som helst på 'NavMesh'-overfladen, og GameObject'et skal bevæge sig mod denne position.

Resumé

I denne tutorial lærte du, hvordan du opsætter og bruger NavMeshAgent til stifinding og navigation i Unity. Ved at følge disse trin og kodeeksempler kan du implementere grundlæggende bevægelse for karakterer eller objekter i dit spil ved hjælp af Unitys indbyggede navigationssystem.

Foreslåede artikler
Sådan laver du en FPS med AI Support i Unity
Implementering af NavMesh Agent i Unity
Opret en NPC, der følger afspilleren i Unity
Sådan laver du en AI af en hjort i enhed
Gennemgang af Unity Asset Store Package - Zombie AI System
Implementering af AI af en fjende i Unity
Unity Føj fjender til en 2D-platform