Werken met NavMeshAgent in Unity

In Unity is NavMeshAgent een krachtige component waarmee je padvinding en navigatie voor personages of objecten in je spel kunt implementeren. Het maakt gebruik van het ingebouwde navigatiesysteem van Unity om paden op een NavMesh-oppervlak te berekenen. In deze zelfstudie behandelen we de basisprincipes van het instellen en gebruiken van NavMeshAgent met codevoorbeelden.

Vereisten

  • Basiskennis van Unity interface en spelontwikkelingsconcepten.
  • Unity geïnstalleerd op uw systeem (versie 2017 of later).

NavMesh instellen Unity

Voordat we NavMeshAgent gaan gebruiken, moeten we een NavMesh in onze scène instellen.

  1. Maak een NavMesh-oppervlak:

    • Ga naar 'GameObject -> 3D Object -> NavMesh Surface'. Hierdoor wordt een nieuw GameObject gemaakt waaraan een 'NavMeshSurface'-component is gekoppeld.
    • Pas de instellingen van de NavMesh Surface-component aan zoals nodig voor uw scène.
  2. Bak NavMesh:

    • Klik op de 'Bake'-knop in de 'NavMesh Surface'-component om de NavMesh voor uw scène te genereren.
    • Zorg ervoor dat uw omgeving (terrein, obstakels, enz.) correct is geconfigureerd om nauwkeurige padbepaling mogelijk te maken.

NavMeshAgent gebruiken in code

Laten we nu wat code schrijven om een ​​GameObject-beweging te maken met behulp van NavMeshAgent.

Stap 1: Bevestig NavMeshAgent aan GameObject

  • Voeg een NavMeshAgent-component toe aan uw GameObject in de Unity-editor. U kunt dit doen door het GameObject te selecteren, op 'Add Component' te klikken en vervolgens 'NavMeshAgent' toe te voegen.

Stap 2: Schrijf een script voor beweging

  • Maak een nieuw C#-script (bijvoorbeeld 'PlayerController.cs') en koppel dit aan het GameObject met de NavMeshAgent-component. Open het script in de code-editor van uw voorkeur.
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);
        }
    }
}

Stap 3: Scène instellen en testen

  • Zorg ervoor dat uw GameObject met NavMeshAgent en het bijgevoegde script aanwezig zijn in de scène.
  • Druk op Speel in de Unity Editor en observeer het gedrag.
  • Klik ergens op het 'NavMesh'-oppervlak en het GameObject zou naar die positie moeten bewegen.

Samenvatting

In deze tutorial hebt u geleerd hoe u NavMeshAgent instelt en gebruikt voor padvinding en navigatie in Unity. Door deze stappen en codevoorbeelden te volgen, kun je basisbewegingen voor personages of objecten in je game implementeren met behulp van het ingebouwde navigatiesysteem van Unity.

Voorgestelde artikelen
Hoe je een FPS maakt met de AI-ondersteuning in Unity
Implementatie van NavMesh Agent in Unity
Creëer een NPC die de speler in eenheid volgt
Hoe je een AI van een hert in eenheid maakt
Herziening van het Unity Asset Store-pakket - Zombie AI-systeem
Implementatie van AI van een vijand in eenheid
Unity Voeg vijanden toe aan een 2D-platformgame