D'accord, merci pour les détails . Donc si j'appui sur deux boutons simultanément, l'animation la plus forte prend le dessus, et si je relâche un seul bouton l'animation restante étant active mais précédemment pas en lecture va prendre le relais. OK , je n'ai pas ce résultat pour le moment, je vais essayer de regarder du côté de la priorité car elle a l'air sans effet, pour le moment, quand je fais le test, rien ne m’empêche de lancer une animation de priorité 2 quand je joue une animation de priorité 10 .
Dernière modification par jonath313 (19-06-2015 13:30:53)
Hors ligne
ah ... ben alors la je sais pas ^^
poste ton code, que je regarde de plus pret
fait des "printf" un peut partout pour savoir ce qu'il si passe si tu n'est pas à laise avec un debugeur
si ça viens des prioritées, affiches la valeurs de la prioriter de "current" dans "active" au debut et a la fin
Hors ligne
Bon je me suis arraché pas mal de cheveux pour trouver un cas que je ne traite pas pour le moment. Déjà il y a quelque chose de sûr, avant de dire que le priorité est inéfficace, il faudrait qu'elle soit rafraichie au bon moment... Pour une foi que je suis sûr de quelque chose
Je t'explique :
Pour le moment, quand j'appui sur un bouton de la manette je bind une animation, elle se joue, pas de soucis.
J'appui sur un autre bouton , une autre animation se joue, tout va bien, c'est ce qu'on veut.
J'ai visualisé la valeur de la priorité au moment du bind() et au moment du unbind() et voici ce qu'il se passe :
Quand j'appui sur le bouton("marcher" -> priorité = 10) au moment de l'appui je bind() donc je vois s'afficher 10, tout va bien.
Je laisse appuyé le bouton marcher et maintenant j'appui sur sauter (priorité = 2) et là l'animation sauter se lance alors que marcher est active (on voit sur la console 2 qui s'affiche pour la priorité). Déjà là j'ai vue qu' il y a quelque chose qui ne va pas et c'est logique en même temps car dans le code si j'active une animation, j'écrase la priorité sans vérifier avant si elle est supérieure.
Après, je pense que la priorité devrait aussi être rafraîchi au moment du unbind() car ensuite j'ai relâché le bouton sauter en gardant toujours marcher appuyer et là j'ai vue sur la console "2" -> qui correspond à la priorité de sauter (normal vue que je rafraîchi la priorité que quand j'active et non quand je désactive).
Bon, ce poste m'a permis de poser le problème et prendre du recul, je pense avoir déniché ce qui me convient pas.
Donc du coups, j'ai compris que quand on jouait les frames 0,0 dans unbind(), on forçait le node sur cette animation.
Après niveau code j'ai pas changé grand chose, j'essai d'utiliser GenericState, plutôt que de créer une nouvelle classe IdleState.
Dans ma classe application je test les événements comme ceci:
Dans ma classe player je fais :
Voila c'est pas glorieux mais je fais comme je peux
Hors ligne
Déjà là j'ai vue qu' il y a quelque chose qui ne va pas et c'est logique en même temps car dans le code si j'active une animation, j'écrase la priorité sans vérifier avant si elle est supérieure.
le fait qu'une animation de prioriter inférieur a une animation courante ce bind est un soucis, par contre non je ne suis pas d'accord sur la fin de ta phrase
alors je ne sais pas, c'est un peut chiant ce terme "active" que j'utilise, ça fous le bordel dans les explications ^^"
mais a priorie, si j'ai comprit, tu pensse qu'une seul annimation peut être active ? ça dépend du sens, si tu parle de "activated" ou "binded"
une seul animation peut être "binded", mais plusieurs peuvent être "activated"
Après, je pense que la priorité devrait aussi être rafraîchi au moment du unbind() car ensuite j'ai relâché le bouton sauter en gardant toujours marcher appuyer et là j'ai vue sur la console "2" -> qui correspond à la priorité de sauter (normal vue que je rafraîchi la priorité que quand j'active et non quand je désactive).
tu la dit toi même quand tu relache le boutton sauter, un évènement ce produit donc peut importe comment tu apelle "activate" par je ne sais quelle bricolage () l'animation est de tout façon rafraichie, sinon tu n'aurais pas "2" dans la console
je suppose que ce "2" est un printf dans unbind ? et ce qui suit c'est un bind qui n'a pas lieux, ce qu'il faut résoudre
Donc du coups, j'ai compris que quand on jouait les frames 0,0 dans unbind(), on forçait le node sur cette animation.
ouaip, mais de tout façon c'est écraser par l'animation suivante
Après niveau code j'ai pas changé grand chose, j'essai d'utiliser GenericState, plutôt que de créer une nouvelle classe IdleState.
niquel
je ne suis pas d'accord sur le rafraichissement de l'animation, mais ça ne devraient pas faire buguer le comportement
utilise tu std::sort ? le cas echéant tu peut ne plus avoir de correspondance avec ton enum
je regarderais ça demain matin,
je suis claquer (peut-être passer a coté d'un truc)
je vais peut-être reprendre un sample d'irrlicht pour coder ça du coup tu me met le doute a force 'O.o
Hors ligne
Ha oui j'ai oublier de préciser que j'ai réussi à maintenir une correspondance entre les enum et ce que je voulais activer en faisant :
Peut être que mon bricolage influe sur le fonctionnement aussi
Ps: pour te répondre, pour l'affichage j'ai fais :
cout<<Apriority<<endl; dans bind() et unbind().
Ok pas de soucis repose toi bien, on se tient au courant demain alors .
Hors ligne
std::sort c'est pour ranger t'est animation par prioriter
ce que tu fait, c'est égales a ça
ranger 3 fois avec des éléments en plus, reviens a ranger une seul fois a la fin
qui est égale a ça
Hors ligne
Ok merci Magun, j'ai compris pourquoi j'ai autant pinaillé et tu vas me dire si c'est normal...
En fait quand je compile ton programme et que je l'éxecute à partir de l'éditeur IDE codeblocks, sans rien modifier, le personnage joue les bind une fois toutes les "environ" 10 exécutions. En gros je compile 10 fois de suite pour que les événement clavier fonctionnent. De plus, je me suis rendu compte que çà marchait mieux mais pas encore parfaitement :
Le personnage marche puis j'interromp par un saut ok et après, attacking n'interrompait pas running, j'ai fais oulaaa là c'est pas normal, si tu ma posté le code c'est que çà marche et dans le code tout est bon. Je me suis dis, je vais essayer un truc, et si j’exécutais le .exe pour voir ,... et là ...
Tout fonctionne, ... en gros j'ai pas le même résultat entre une exécution par l'IDE et lancer moi-même le .exe . Tu pense que mon IDE est boiteux ? car là sérieux je trouve çà hyper bizard quand même, si çà se trouve la commande compil and run déconne ou un truc du genre.
En tout cas merci, je viens de m'apercevoir que tout ne venait pas de moi !
J'attends ton explication pro
Dernière modification par jonath313 (20-06-2015 22:14:42)
Hors ligne
est tu sur que l'exe généré est bien celui que tu lance (entre ide/exploreur) ?
a tu plusieurs targets ? (debug/release/...)
unix, windows ?
j'ai souvenir d'avoir eu un problème similaire, je ne sais plus vraiment ce que j'avais fait
commence par supprimer tout les fichier généré par codeblocks *.o, *.depend, .fuse_hidden*, gmon.out, .obj/
fichier temporaire %TEMP% ou /tmp/*
un "rebuild all"
c'est un sujet sur le quelle on ne trouve pas beaucoup d'info
Hors ligne
ok, bon visiblement çà vient de mon antivirus, j'ai pris une mauvais habitude. Quand je compile and run l'antivirus fait un scan et j'ai tendance à désactiver l'antivirus à ce moment là. Je ne sais pas ce qu'il se produit si l'antivirus ne peut pas finir de scanner l'application. Enfin bref c'est la seule explication que j'ai car je fais souvent cette manipulation et ce coups ci tout avait planté. Mais c'est quand même bizard que le rebuild all soit sans effet, du-coups j'ai recréé un projet et là plus de problème avec l'ide. Merci pour l'info, je penserai à supprimer les fichiers généré par codeblocks maintenant.
En tout cas je tiens à te remercier car tu m'as vraiment aidé à résoudre ce sujet et tu y a consacré pas mal de temps, c'est vraiment sympas .
Maintenant je m’amuse à recréer ce code, en utilisant des classes, j'ai moins d'appréhension à les utiliser. Même si je suis encore loin de maîtriser, je vais m’entraîner pour que ce soit plus instinctif.
Encore merci
Hors ligne
antivirus, ça existe encore ?
j'ai effectivement passer beaucoup de temps !
mais je reste dispo au besoin
amuse toi bien
Hors ligne
Options | Liens officiels | Caractéristiques | Statistiques | Communauté |
---|---|---|---|---|
Corrections |
|
xhtml 1.0 css 2.1 Propulsé par FluxBB Traduit par FluxBB.fr |
882 membres 1429 sujets 11119 messages |
Dernier membre inscrit: LiseBuisson96 24 invités en ligne Aucun membre connecté RSS Feed |