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.
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.
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.