Créer un système de pathfinder avec NavMesh (point’n click, RTS) – Tuto Unity

Dans ce tutoriel pour débutant en français, nous allons créer un Pathfinder simple avec les outils d’intelligence artificielle de Unity. Les Pathfinders sont très utilisés dans les RTS et les point’n click.

Version de Unity utilisée dans ce tutoriel : 2021.3.0f1 LTS

Créez un nouveau projet 3D avec Unity.

Installer le NavMesh Component

Rendez-vous sur :
https://github.com/Unity-Technologies/NavMeshComponents

Téléchargez le NavMesh Component et décompressez-le dans le dossier Assets de votre projet.

 

Préparation de la Scène

La caméra

  • Dans Hierarchy
    Sélectionnez Main Camera
  • Dans Inspector
    Transform
    Position x=8, y=15, z=0
    Rotation x=65, y=-135, z=0

Créer le terrain

  • Dans Hierarchy
    Faites un Clique droit > 3D Object > Terrain
    Sélectionnez le Terrain
  • Dans Inspector
    Transform Position : x=-500, y=0, z=-500

Sauvegardez Ctrl+s 🙂

Créer des murs

  • Dans Hierarchy
    Clique droit > 3D Object > Cube
    Sélectionnez le cube
  • Dans Inspector
    Transform
    Position : x=0, y=1, z=-5
    Scale : x=5, y=2, z=1
  • Dupliquer le mur
    Clique droit > Duplicate
  • Transform
    Position : x=6, y=1, z=-8

Sauvegardez Ctrl+s

NavMeshSurface

  • Dans Hierarchy
    Clique droit > AI > NavMeshSurface
    Sélectionnez NavMeshSurface
  • Dans Inspector, cliquez sur Bake
    Cela calcule les endroits où le personnage pourra se placer. Dans la fenêtre Scene, c’est ce qui est en bleu.

Sauvegardez Ctrl+s

Créer le personnage

  • Dans Hierarchy
    Faites un Clique droit > 3D Object > Capsule
    Sélectionnez la Caspule
  • Dans Inspector
    Renommer : Player
    Transform
    Position x=0, y=1, z=0
  • Ajoutez le composant NavMeshAgent
    Add Component > NavMeshAgent
  • Créez le Script Player Controller
    Add Component > Ecrivez PlayerController

Sauvegardez Ctrl+s

Ouvrez le fichier PlayerController.cs dans Visual Studio

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;

public class PlayerController : MonoBehaviour
{
    //La camera
    Camera m_Camera;

    //Le component NavMeshAgent
    NavMeshAgent navMeshAgent;


    // Start is called before the first frame update
    void Start()
    {
        //FindObjectOfType : trouve la Camera dans la scene
        m_Camera = FindObjectOfType<Camera>();

        //GetComponent : trouve le component dans le Game Object où se trouve le script PlayerController
        navMeshAgent = GetComponent<NavMeshAgent>();

    }

    
    void Update()
    {
        //Clique sur le bouton gauche souris
        if(Input.GetMouseButtonDown(0))
        {
            //Position où on clique, crée un rayon        
            Ray ray = m_Camera.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;

            //Si le rayon touche quelque chose (le terrain)
            if(Physics.Raycast(ray, out hit))
            {
              //On indique au NavMeshAgent la position du point où on clique
              //Il calculera un itinéraire en évitant les obstacles et déplacera notre personnage !
                navMeshAgent.SetDestination(hit.point);
            }
           
        }
    }
}

Maintenant, le personnage représenté par la Capsule se déplace sur le terrain à l’endroit où on clique.

Recevez les dernières actus

Nous ne spammons pas ! Consultez notre politique de confidentialité pour plus d’informations.

1 réflexion sur “Créer un système de pathfinder avec NavMesh (point’n click, RTS) – Tuto Unity”

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Retour en haut