[RESOLU] [MY-AL] NavMeshPathStatus.PathComplete retourne toujours faux

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
riobusor66
Messages : 6
Inscription : 04 Avr 2018 23:24

[RESOLU] [MY-AL] NavMeshPathStatus.PathComplete retourne toujours faux

Message par riobusor66 » 19 Juil 2018 16:34

Bonjour, j'ai un problème concernant le pathfinding de mes ennemies. J'utilise une extension d'unity prise sur leur git hub pour avoir un baking dynamique. Pour savoir si il peuvent aller j'usqu'a une position j'ai écris cette méthode qui est utiliser toute les 2 secondes:

Code : Tout sélectionner

private bool CalculPath()
    {
        agent.CalculatePath(dest, navPath);

        if (navPath.status == NavMeshPathStatus.PathComplete) return true;
        else return false;
    }
dest est un vecteur3 et navPath est un NavMeshPath initialisé dans Start comme ceci navPath = new NavMeshPath()

Le problème est qu'elle retourne toujours false, alors que les ennemies arrive à atteindre leur destination.
Merci d'avance pour votre aide.
Dernière édition par riobusor66 le 19 Juil 2018 17:13, édité 1 fois.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6214
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [MY-AL] NavMeshPathStatus.PathComplete retourne toujours faux

Message par boubouk50 » 19 Juil 2018 16:45

Salut,

Que te retourne navPath.status? Toujours PathPartial? Même arrivé à destination? Tes éléments ne sont pas déclarés en static par hasard?

Code : Tout sélectionner

private bool CalculPath()
    {
        agent.CalculatePath(dest, navPath);
        Debug.Log (navPath.status);

        return (navPath.status == NavMeshPathStatus.PathComplete);
    }
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: [MY-AL] NavMeshPathStatus.PathComplete retourne toujours faux

Message par Alesk » 19 Juil 2018 16:48

A mon avis c'est une fonction qui ne retourne pas de résultat immédiatement, il se passe un peu de temps entre le moment où tu l'exécutes et où le résultat est trouvé (ça doit sûrement passer par un thread secondaire).

C'est ce qu'on appelle une fonction asynchrone.

Donc tu ne pourras pas obtenir le bon status tout de suite.

Il faut repenser la structure de ton code pour tenir compte du fait que tu n'auras cette réponse (true ou false) qu'un peu plus tard.

Donc là tu devrais retourner false tout le temps, et avoir en plus un autre bout de code qui vérifie l'état de navPath.status à intervales réguliers, dans la méthode FixedUpdate() par exemple.

riobusor66
Messages : 6
Inscription : 04 Avr 2018 23:24

Re: [MY-AL] NavMeshPathStatus.PathComplete retourne toujours faux

Message par riobusor66 » 19 Juil 2018 17:13

Merci pour vos réponses. je vient de résoudre le problème. J'avais mis une ligne permettant d'utiliser la fonction en commentaire ce qu'il fait qu'elle n’étais pas exécuter. Après çà la valeur retourner était toujours pathComplete car il restait un petit passage sous un objet maintenant tout fonctionne correctement lorsqu'il n'y as pas de chemin disponible il passe en pathPartial.

Répondre

Revenir vers « (C#) CSharp »