Arbeta med NavMeshAgent i Unity

I Unity är NavMeshAgent en kraftfull komponent som låter dig implementera sökväg och navigering för karaktärer eller objekt i ditt spel. Den använder Unitys inbyggda navigationssystem för att beräkna banor på en NavMesh-yta. I den här handledningen kommer vi att täcka grunderna för att ställa in och använda NavMeshAgent med kodexempel.

Förutsättningar

  • Grundläggande förståelse för Unity gränssnitt och spelutvecklingskoncept.
  • Unity installerad på ditt system (version 2017 eller senare).

Konfigurera NavMesh i Unity

Innan vi dyker in i att använda NavMeshAgent måste vi ställa in ett NavMesh i vår scen.

  1. Skapa en NavMesh-yta:

    • Gå till 'GameObject -> 3D Object -> NavMesh Surface'. Detta skapar ett nytt GameObject med en 'NavMeshSurface'-komponent ansluten.
    • Justera inställningarna för NavMesh Surface-komponenten efter behov för din scen.
  2. Baka NavMesh:

    • Klicka på knappen 'Bake' i 'NavMesh Surface'-komponenten för att skapa NavMesh för din scen.
    • Se till att din miljö (terräng, hinder, etc.) är korrekt konfigurerad för att möjliggöra exakt sökväg.

Använder NavMeshAgent i kod

Låt oss nu skriva lite kod för att göra ett GameObject-drag med hjälp av NavMeshAgent.

Steg 1: Fäst NavMeshAgent till GameObject

  • Bifoga en NavMeshAgent-komponent till ditt GameObject i Unity-redigeraren. Du kan göra detta genom att välja GameObject, klicka på 'Add Component' och sedan lägga till 'NavMeshAgent'.

Steg 2: Skriv manus för rörelse

  • Skapa ett nytt C#-skript (t.ex. 'PlayerController.cs') och bifoga det till GameObject med NavMeshAgent-komponenten. Öppna skriptet i din föredragna kodredigerare.
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);
        }
    }
}

Steg 3: Ställ in scen och testa

  • Se till att ditt GameObject med NavMeshAgent och det bifogade skriptet finns i scenen.
  • Tryck Play i Unity Editor och observera beteendet.
  • Klicka var som helst på 'NavMesh'-ytan och GameObject ska flyttas mot den positionen.

Sammanfattning

I den här handledningen lärde du dig hur du ställer in och använder NavMeshAgent för sökväg och navigering i Unity. Genom att följa dessa steg och kodexempel kan du implementera grundläggande rörelse för karaktärer eller objekt i ditt spel med Unitys inbyggda navigationssystem.