Comment faire en sorte qu'un PNJ poursuive le joueur dans Unity en utilisant NavMesh
Dans ce didacticiel, nous utiliserons le système NavMesh d'Unity pour créer un PNJ qui poursuit le joueur. NavMesh permet une recherche de chemin efficace et l'évitement des obstacles, ce qui le rend idéal pour le comportement de l'IA dans les environnements 3D.
Étape 1: Mise en place de la scène
Avant d’implémenter NavMesh, nous avons besoin d’une configuration de scène appropriée:
- Créez un nouveau projet 3D dans Unity.
- Ajoutez un Plane pour servir de sol.
- Ajoutez un Cube ou tout autre modèle 3D pour représenter le joueur. Nommez-le Player.
- Ajoutez un autre Cube ou modèle 3D pour représenter le PNJ. Nommez-le NPC.
- Placez le joueur et le PNJ à différentes positions sur le plan.
Étape 2: Cuisson du NavMesh
Pour utiliser le système NavMesh d'Unity, nous devons créer le maillage de navigation:
- Sélectionnez le plan terrestre dans la hiérarchie.
- Dans l'inspecteur, cliquez sur Ajouter un composant et ajoutez un NavMeshSurface.
- Dans le composant NavMeshSurface, assurez-vous que le plan est marqué comme une surface praticable.
- Cliquez sur le bouton Bake dans le composant NavMeshSurface pour générer le NavMesh.
- Facultatif: si vous avez des obstacles (par exemple, des murs), assurez-vous qu'ils disposent de composants NavMeshObstacle pour bloquer les mouvements des PNJ.
Étape 3: Ajout d'un NavMeshAgent
Maintenant, nous allons préparer le PNJ à utiliser le cheminement d'Unity:
- Sélectionnez le PNJ dans la hiérarchie.
- Dans l'inspecteur, cliquez sur Ajouter un composant et ajoutez un NavMeshAgent.
- Ajustez les propriétés de NavMeshAgent selon vos besoins, telles que la vitesse, l'accélération et la distance d'arrêt.
Étape 4: Rédaction du script de poursuite
Ensuite, nous allons créer un script pour que le PNJ poursuive le joueur:
- Cliquez avec le bouton droit de la souris dans le panneau Projet et sélectionnez Créer > Script C#. Nommez-le NPCChase.
- Double-cliquez sur le script pour l'ouvrir dans votre éditeur de code.
- Remplacez le code par défaut par le suivant:
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);
}
}
}
Étape 5: Attribution du script et de la référence du lecteur
Enfin, nous allons attribuer le script et configurer la référence du lecteur:
- Sélectionnez le PNJ dans la hiérarchie.
- Faites glisser et déposez le script NPCChase sur le PNJ.
- Dans l'inspecteur, recherchez le champ Player dans le script.
- Faites glisser le GameObject du joueur de la hiérarchie vers le champ Joueur.
Étape 6: Tester la scène
Pour tester votre configuration:
- Appuyez sur le bouton Play dans l'éditeur Unity.
- Déplacez le lecteur (par exemple, en utilisant le clavier ou le contrôleur).
- Observez le PNJ trouver et poursuivre dynamiquement le joueur, en évitant les obstacles le cas échéant.
Optionnel: Personnalisation du comportement
Vous pouvez affiner davantage le comportement de votre PNJ:
- Distance d'arrêt: Ajustez la Distance d'arrêt de NavMeshAgent pour que le PNJ s'arrête à une certaine distance.
- Évitement d'obstacles: Assurez-vous que les obstacles disposent de composants NavMeshObstacle pour un évitement précis.
- Animations: Utilisez des animations pour rendre le mouvement du PNJ plus réaliste en déclenchant des animations en fonction de la vitesse.
Conclusion
Nous avons créé un PNJ qui poursuit le joueur de manière dynamique à l'aide du système NavMesh d'Unity. Cette approche est robuste et peut être facilement étendue pour des comportements d'IA plus complexes. Expérimentez différents paramètres pour adapter la recherche de chemin du PNJ aux besoins de votre jeu.