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.







Bonsoir,
Ceci fonctionne pour un jeu 2D ?