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