[RESOLU] NavMesh et multiple agent type..

Questions techniques liées à l’utilisation d'Unity (et n'entrant pas dans le cadre d'une des sections suivantes)
djulio74
Messages : 682
Inscription : 19 Déc 2009 22:55

[RESOLU] NavMesh et multiple agent type..

Message par djulio74 » 13 Sep 2023 20:45

Salut a tous,

Alors voilà pour mon jeux quadruple A que je suis en train de terminer... heu ... non c'est pas ça. ^^ :twisted:
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);
    }
}
Alors je pense avoir bien saisi le principe, mais il doit manquer des éléments je pense..

Des idées? :super:
Dernière édition par djulio74 le 16 Sep 2023 12:53, édité 1 fois.

______________________________________________________________
\_______________________ Impossible is nothing _______________________/

Avatar de l’utilisateur
Max
Messages : 8772
Inscription : 30 Juil 2011 13:57
Contact :

Re: NavMesh et multiple agent type..

Message par Max » 14 Sep 2023 10:12

Salut :)

Ce n'est probablement pas la réponse que tu attends, mais il faut savoir que les components Navigation ne sont plus dispo sur les dernières versions d'Unity (même si cela reste évidement rétrocompatible).
Comme pour beaucoup de fonctionnalités proposées par Unity, il faut désormais importer le package qui va bien
(dans ce cas l'AI Navigation), et qui est basé justement uniquement sur les ... NavMeshSurfaces :mrgreen:
Perso je trouve que cela fonctionne pas mal, et cela à l'avantage d'être bien plus souple et dynamique (en tous les cas plus que le bon vieux NavMesh originel) ...
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

djulio74
Messages : 682
Inscription : 19 Déc 2009 22:55

Re: NavMesh et multiple agent type..

Message par djulio74 » 16 Sep 2023 12:53

Salut,
en effet ce n'est pas exactement la solution que je cherchais. ^^
Par contre, j'étais sur le version 2019.1 de unity, et je suis passé sur la version 2023 et il s'avère que le navMeshSurface est natif dans cette version (ajouter le package AI.Navigation, qui n'était pas dispo pour mon ancienne version)
Je suis donc en train de faire mumuse avec ça. :super:

En tout cas merci pour la réponse

______________________________________________________________
\_______________________ Impossible is nothing _______________________/

Ivon49
Messages : 2
Inscription : 21 Sep 2023 09:03

Re: [RESOLU] NavMesh et multiple agent type..

Message par Ivon49 » 22 Sep 2023 08:23

Bonjour,

Cela semble effectivement offrir plus de flexibilité et de dynamisme. C'est bon à savoir que les components Navigation ne sont plus inclus dans les dernières versions d'Unity, et qu'il faut désormais importer le package AI Navigation pour utiliser NavMeshSurfaces. En tout cas, merci pour l'info.

Répondre

Revenir vers « Unity le logiciel »