Travailler avec NavMeshAgent dans Unity

Dans Unity, NavMeshAgent est un composant puissant qui vous permet d'implémenter la recherche de chemin et la navigation pour les personnages ou les objets de votre jeu. Il utilise le système de navigation intégré de Unity pour calculer des chemins sur une surface NavMesh. Dans ce didacticiel, nous aborderons les bases de la configuration et de l'utilisation de NavMeshAgent avec des exemples de code.

Conditions préalables

  • Compréhension de base de Unity interface et des concepts de développement de jeux.
  • Unity installé sur votre système (version 2017 ou ultérieure).

Configuration de NavMesh dans Unity

Avant de nous lancer dans l'utilisation de NavMeshAgent, nous devons configurer un NavMesh dans notre scène.

  1. Créez une surface NavMesh:

    • Allez à 'GameObject -> 3D Object -> NavMesh Surface'. Cela crée un nouveau GameObject avec un composant 'NavMeshSurface' attaché.
    • Ajustez les paramètres du composant NavMesh Surface selon les besoins de votre scène.
  2. Cuire NavMesh:

    • Cliquez sur le bouton 'Bake' dans le composant 'NavMesh Surface' pour générer le NavMesh pour votre scène.
    • Assurez-vous que votre environnement (terrain, obstacles, etc.) est correctement configuré pour permettre une orientation précise.

Utilisation de NavMeshAgent dans le code

Maintenant, écrivons du code pour effectuer un déplacement GameObject à l'aide de NavMeshAgent.

Étape 1: attacher NavMeshAgent à GameObject

  • Attachez un composant NavMeshAgent à votre GameObject dans l'éditeur Unity. Vous pouvez le faire en sélectionnant le GameObject, en cliquant sur 'Add Component', puis en ajoutant 'NavMeshAgent'.

Étape 2: Écrire un script pour le mouvement

  • Créez un nouveau script C# (par exemple, 'PlayerController.cs') et attachez-le au GameObject avec le composant NavMeshAgent. Ouvrez le script dans votre éditeur de code préféré.
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);
        }
    }
}

Étape 3: configurer la scène et tester

  • Assurez-vous que votre GameObject avec NavMeshAgent et le script ci-joint sont présents dans la scène.
  • Appuyez sur Play dans l'éditeur Unity et observez le comportement.
  • Cliquez n'importe où sur la surface 'NavMesh' et le GameObject devrait se déplacer vers cette position.

Résumé

Dans ce didacticiel, vous avez appris à configurer et à utiliser NavMeshAgent pour la recherche de chemin et la navigation dans Unity. En suivant ces étapes et exemples de code, vous pouvez implémenter des mouvements de base pour les personnages ou les objets de votre jeu à l'aide du système de navigation intégré de Unity.

Articles suggérés
Implémentation de l'agent NavMesh dans Unity
Comment créer un FPS avec le support de l'IA dans Unity
Comment faire une IA d'un cerf dans Unity
Implémentation de l'IA d'un ennemi dans Unity
Créer un PNJ qui suit le joueur dans Unity
Examen du package Unity Asset Store - Zombie AI System
Unity ajoute des ennemis à une plate-forme 2D