Mauvais comportement qui varie en sous évènement de fonction

Bonjour,
j’ai un petit problème qui s’éternise (c’est pour ça que je viens poster d’ailleurs).

Alors en fait, j’ai un objet IA, SoldierFriend qui est dans le groupe IAs, et qui doit pouvoir pivoter de manière aléatoire, mais sans se contenter d’une simple variable passant par 0, 1 et 2 pour faire tourner à droite ou faire tourner à gauche. L’IA reçoit une valeur qui est stockée dans une variable “LookAngle”. L’IA doit se tourner de manière à calquer sa direction sur cette valeur en prenant la direction la plus rapide pour arriver à cette valeur.

J’ai donc les évènements suivants :
probleme01.jpg
(à noter que la direction de l’IA est diminué de 360 si elle dépasse 360)

C’est tout à fait perfectible, vu que la direction de l’IA varie de deux en deux. Mais en principe, je devrais obtenir un résultat se rapprochant du comportement désiré,
or l’IA ne fait que tourner dans une seule direction constamment.
Il n’y a même pas d’arrêt. ça c’est le problème du mauvais comportement

Problème deux, ces évènements sont prévus pour être exécutés en fonction :
probleme02.jpg
Voilà ce que je fais. En théorie, c’est censé avoir le même comportement (mauvais) que précédemment, mais que nenni, cette fois, l’IA ne tourne même plus.
On a donc le problème du comportement qui varie une fois dans une fonction.

Voilà, j’espère que mon problème est assez bien expliqué, sinon je peux donner plus de précision si besoin est, et surtout, merci d’avance :slight_smile:

Pour la fonction, as tu mis cette fonction comme utilisant les objets concernés du contexte qui appelle la fonction ?

Oui, c’est ce que j’ai fais.

Ah bizarre alors… Tu pourrai peut être m’envoyer le bout du jeu qui cloche ?

Ok, je t’envoies le tout alors, ça fait 117ko décompressé. :slight_smile:

projetColin.zip (11.6 KB)

J’ai corrigé un problème au niveau des fonctions, en tout cas maintenant ton jeu marche mieux ( Le personnage se met à tourner lors de l’appel à la fonction ) : La correction sera disponible dans la prochaine version.

Pour le problème lié au fait que le personnage ne tourne pas correctement, je m’y suis pas penché, mais il faut noter que l’angle peut varier aussi négativement, et pas forcément entre 0 et 360 degrés.

OK (donc finalement il y avait bien un bug :laughing: ).
Sinon, il me semblait avoir justement pris en compte que cela pouvait varier négativement, mais par contre j’ai oublié de créer un évènement qui ajoute 360° si la direction de l’objet est inférieur à -360°, j’ai peut-être (forcément même) oublié des trucs à part ça en effet.

J’ai trouvé le problème du mauvais comportement, donc quitte à résoudre un problème, autant partager la solution.

solution.jpg

Voilà et le résultat est maintenant concluant :slight_smile:

J’ai mis en ligne la version 2.0.10538 mais celle ci ne corrige finalement pas le problème :
Il s’est avéré être plus vicieux que prévu, le problème vient en fait de la condition OU qui ne s’adapte pas bien à l’utilisation dans une fonction qui garde en mémoire les objets concernés du contexte appelant.

Plusieurs solutions pour contourner le problème pour le moment :

-Se passer de fonction,
-Mettre la fonction en mode “Oublier les objets concernés” ( c’est le mode par défaut ) et alors utiliser une parade :
Par exemple mettre une variable à 1 pour les objets qui doivent être utilisés par la fonction ( lors de l’appel de la fonction ), puis dans la fonction tester les objets qui ont leur variable à 1, et enfin une fois que la fonction a fini d’être appelée, remettre toutes les variables en question à 0.
-Garder la fonction telle quelle mais en séparant le OU en plusieurs évènements.

Ok, bah je pense que séparer le OU en plusieurs évènements sera plus pratique quand le bug sera corrigé pour remettre en place.

Oui, et ça permet de conserver la fonction.