Hur man får en NPC att jaga spelaren i Unity med hjälp av NavMesh
I den här handledningen kommer vi att använda Unitys NavMesh-system för att skapa en NPC som jagar spelaren. NavMesh tillhandahåller effektiv sökväg och undvikande av hinder, vilket gör den idealisk för AI-beteende i 3D-miljöer.
Steg 1: Konfigurera scenen
Innan vi implementerar NavMesh behöver vi en ordentlig sceninställning:
- Skapa ett nytt 3D-projekt i Unity.
- Lägg till ett Plane för att fungera som marken.
- Lägg till en Cube eller någon 3D-modell för att representera spelaren. Döp det till Spelare.
- Lägg till en annan Cube eller 3D-modell för att representera NPC:n. Döp det till NPC.
- Placera spelaren och NPC på olika positioner på planet.
Steg 2: Baka NavMesh
För att använda Unitys NavMesh-system måste vi baka navigationsnätet:
- Välj jordplanet i hierarkin.
- I Inspector, klicka på Add Component och lägg till en NavMeshSurface.
- Se till att planet är markerat som en gångbar yta i NavMeshSurface-komponenten.
- Klicka på knappen Bake i NavMeshSurface-komponenten för att generera NavMesh.
- Valfritt: Om du har hinder (t.ex. väggar), se till att de har NavMeshObstacle-komponenter för att blockera NPC-rörelser.
Steg 3: Lägga till en NavMeshAgent
Nu förbereder vi NPC för att använda Unitys sökväg:
- Välj NPC i hierarkin.
- I Inspector, klicka på Add Component och lägg till en NavMeshAgent.
- Justera NavMeshAgent-egenskaperna efter behov, såsom hastighet, acceleration och stoppsträcka.
Steg 4: Skriva Chase Script
Därefter skapar vi ett skript för att få NPC:n att jaga spelaren:
- Högerklicka i projektpanelen och välj Skapa > C#-skript. Döp det till NPCChase.
- Dubbelklicka på skriptet för att öppna det i din kodredigerare.
- Ersätt standardkoden med följande:
using UnityEngine;
using UnityEngine.AI;
public class NPCChase : MonoBehaviour
{
public Transform player; // Reference to the player's position
private NavMeshAgent agent; // Reference to the NavMeshAgent
void Start()
{
// Get the NavMeshAgent component
agent = GetComponent<NavMeshAgent>();
}
void Update()
{
if (player != null)
{
// Set the agent's destination to the player's position
agent.SetDestination(player.position);
}
}
}
Steg 5: Tilldela skriptet och spelarreferensen
Slutligen tilldelar vi skriptet och ställer in spelarreferensen:
- Välj NPC i hierarkin.
- Dra och släpp NPCChase-skriptet på NPC:n.
- I Inspector, leta reda på Player-fältet i skriptet.
- Dra Player GameObject från hierarkin till spelarfältet.
Steg 6: Testa scenen
Så här testar du din inställning:
- Tryck på knappen Play i Unity Editor.
- Flytta runt spelaren (t.ex. med tangentbords- eller kontrollinmatning).
- Observera att NPC dynamiskt hittar och jagar spelaren, undvik hinder där det är tillämpligt.
Valfritt: Anpassa beteende
Du kan förfina din NPC:s beteende ytterligare:
- Stoppsträcka: Justera NavMeshAgents Stoppsträcka för att få NPC:n att stanna vid ett visst avstånd.
- Hinderundvikande: Se till att hinder har NavMeshObstacle-komponenter för exakt undvikande.
- Animationer: Använd animationer för att göra NPC-rörelsen mer realistisk genom att trigga animationer baserade på hastighet.
Slutsats
Vi har skapat en NPC som dynamiskt jagar spelaren med Unitys NavMesh-system. Detta tillvägagångssätt är robust och kan enkelt utökas för mer komplexa AI-beteenden. Experimentera med olika inställningar för att skräddarsy NPC:s sökväg efter ditt spels behov.