Alors voilà pour mon jeux quadruple A que je suis en train de terminer... heu ... non c'est pas ça. ^^
Pour ma culture personnelle, je me penche ces derniers temps sur les NavMesh après avoir re-découvert "Total Annihilation" que les moins de 20 ans ne peuvent pas connaitre.
enfin bref, j'ai quelques soucis, dont un pas des moindre :
Pourquoi unity n'intègre pas de façon simple la création de plusieurs NavMesh? en effet, si j'ai un gros robot et un petit humain, un seul pourrait passer une porte, et bien ça me semble bien compliquer à mettre en œuvre
Alors oui, il y a un package tout fait "NavMeshSurface" qui existe, mais pour diverses raisons j'aimerai m'en passer.
Bref, unity propose bien de baker un navMeh, mais utilisable que par l'agent de base humanoid. si on utilise un autre type, erreur car pas le bon ID car pas de navMesh qui lui correspond.
Alors la question est "simple" : peut-on avec unity, sans ajout d'éléments externes, via script, créer de nouveau NavMesh avec des ID d'agent différents? ou avec des paramètres de radius différent?
Parce que bon, certes j'ai pas tout lu encore dans la doc sur les navMesh, mais déjà bien parcouru, y compris aussi sur la toile, mais pas un seul exemple concret pour la création d'un navMesh... même ChatGPT ne me donne que des exemples non fonctionnels..
Donc bon, quelqu'un aurait-il un peu d'expérience dans le domaine pour m'aiguiller sur la marche a suivre?
Merci
Exemple de proposition ChatGPT, non fonctionnel mais donnant un peu la structure à suivre :
Code : Tout sélectionner
using UnityEngine;
using UnityEngine.AI;
public class CreateNavMesh : MonoBehaviour
{
private void Start()
{
// Assurez-vous que le plan (Plane) et le cube sont statiques pour la navigation.
// Vous pouvez définir cette propriété dans l'inspecteur.
// Créez une instance de NavMeshBuildSettings avec les paramètres souhaités.
NavMeshBuildSettings buildSettings = NavMesh.GetSettingsByIndex(0); // Vous pouvez ajuster l'index selon vos besoins.
// Créez une structure NavMeshBuildSource pour chaque surface statique que vous souhaitez inclure.
NavMeshBuildSource source = new NavMeshBuildSource
{
area = 0, // L'ID de la surface
shape = NavMeshBuildSourceShape.Mesh,
sourceObject = GetComponent<MeshFilter>().sharedMesh,
transform = transform.localToWorldMatrix
};
// Créez un tableau de NavMeshBuildSource contenant toutes les sources à inclure.
NavMeshBuildSource[] sources = { source };
// Créez une structure NavMeshBuildSettings pour spécifier les paramètres de la génération du NavMesh.
NavMeshBuildSettings buildSettings = NavMesh.GetSettingsByIndex(0); // Utilisez l'index approprié ici.
// Générez le NavMesh en utilisant NavMeshBuilder.
NavMeshBuilder.BuildNavMeshData(buildSettings, sources, new Bounds(Vector3.zero, new Vector3(10f, 10f, 10f)), Vector3.zero, Quaternion.identity);
}
}
Des idées?