Message #11678
Sujet: Système d'animation d'irrlicht
| Type | Date | Auteur | Contenu |
|---|---|---|---|
| Dernière modification | 18-06-2015 20:14:40 | Magun |
uhm uhm
merci pour ce long post, avec de bonne explication et constructif ça fait plaisir Enfait, je lance une animation en appuyant sur un bouton, si j'appui sur un autre bouton, une nouvelle animation se lance. Le souci est que si le bouton précédent reste appuyé, l'animation précédente devrait reprendre quand la nouvelle se termine : très bien dans ce cas, j'en conclue que soit tu as un soucis avec la gestions de évènement (point #1) soit unbind interfère totalement avec le fonctionnement voulue, et donc tu as raison sur ce que tu explique (point #2) pour le point #1: je te met les deux codes Code c++ :Code c++ :voila quelle est la grosse différence ? et bien déjà je passe par le joystick et donc comme tu l'avais demander dans un autre topic event.blabla.State détermine l'état des boutons, et leurs états reste actif tout au long de l’appuie (bit 1 boutton 1, bit 2 ... etc) et donc quand je fait anim.active(EAS_RUNNING, keys & 0b000001 && onGround) le resultat ne change pas si une autre touche est impliquer en ce qui concerne "&0b00001" c'est une simple opération binnaire que tu a recopier un peut "bêtement", ici "event.blabla.State" est un entier en electronique tu utilise la même chose avec les portes "AND", donc keys & 0b00001 détermine si le bit 1 est a 1 c'est tout tu comprendra aussi que dans ton code "&0b000001" est inutile ? true = 1 et "1 & 0b000001 = 1" c'est l'opération que tu fait ! or toi tu test sur event.KeyInput.Key, c'est un entier représentant une énumeration, donc une seul valeurs possible, pour preuve tu fait un test d'égalité donc comme tu fait, l'un va s'activer, puis l'autre jamais les deux en même temps, logique ... ce que tu doit faire donc c'est un truc du genre: Code c++ :donc pour le point #2: Je devrais regarder si une autre animation est active, le cas échéant, lancer l'animation IDLE. çà implique un fonctionnement "inter-classe" si je puis me permettre d'appeler çà comme çà. Peut être que çà ne vient pas de là non-plus, je peux me planter, mais c'est une idée à laquelle j'ai réfléchie. Au niveau algorythmique çà donnerai : oui tu as raison, mais dans ce cas, j'opterais simplement pour ne rien mettre dans unbind (excepter binded = false), et pour l'animation "IDLE" avoir une classe personnaliser puisque effectivement lorsque tu fait des opération sur "NePlayer" elle désactive la précédente animation Code c++ :pourquoi ? et bien déjà par ce que si aucune animation est active, celle-ci le resteras, et donc ce binderas en dernier et finalement unbind ne réalisais que l'appelle a idle donc inutile bon par contre je voie un autre soucis, c'est si tu utilise une animation en loop = false que ce passe t'il lorsque l'animation ce finie ? ba rien, elle est toujours considéré comme active, donc comment le régler ? barf, tu peut simplement faire une classes qui dérive de irr::scene::IAnimationEndCallBack, tu passe AnimationManager en temps que pointeur dans la constructeur de tas nouvelle class tu le stock et dans OnAnimationEnd tu desactive ton animation, tu peut regarder JumpState comme exemple, je te laisse bidouiller un peut (ça te feras un peut d'exercice ... )puis bon si tout fois tu n'y arrive pas je passerais voir ce qu'il en est edit/ps: bon par contre, tu fait de l'électronique, j'en est fait durant mais études, je vais voir quelle genre d'analogie je peut faire mais honnêtement je n'en voie pas une grosse différence avec la programmations surtout quand on ce raproche des micro-controlleur & porte logique & module |
| Création du message | 18-06-2015 20:09:25 | Magun |
uhm uhm
merci pour ce long post, avec de bonne explication et constructif ça fait plaisir Enfait, je lance une animation en appuyant sur un bouton, si j'appui sur un autre bouton, une nouvelle animation se lance. Le souci est que si le bouton précédent reste appuyé, l'animation précédente devrait reprendre quand la nouvelle se termine : très bien dans ce cas, j'en conclue que soit tu as un soucis avec la gestions de évènement (point #1) soit unbind interfère totalement avec le fonctionnement voulue, et donc tu as raison sur ce que tu explique (point #2) pour le point #1: je te met les deux codes Code c++ :Code c++ :voila quelle est la grosse différence ? et bien déjà je passe par le joystick et donc comme tu l'avais demander dans un autre topic event.blabla.State détermine l'état des boutons, et leurs états reste actif tout au long de l’appuie (bit 1 boutton 1, bit 2 ... etc) et donc quand je fait anim.active(EAS_RUNNING, keys & 0b000001 && onGround) le resultat ne change pas si une autre touche est impliquer en ce qui concerne "&0b00001" c'est une simple opération binnaire que tu a recopier un peut "bêtement", ici "event.blabla.State" est un entier en electronique tu utilise la même chose avec les portes "AND", donc keys & 0b00001 détermine si le bit 1 est a 1 c'est tout tu comprendra aussi que dans ton code "&0b000001" est inutile ? true = 1 et "1 & 0b000001 = 1" c'est l'opération que tu fait ! or toi tu test sur event.KeyInput.Key, c'est un entier représentant une énumeration, donc une seul valeurs possible, pour preuve tu fait un test d'égalité donc comme tu fait, l'un va s'activer, puis l'autre jamais les deux en même temps, logique ... ce que tu doit faire donc c'est un truc du genre: Code c++ :donc pour le point #2: Je devrais regarder si une autre animation est active, le cas échéant, lancer l'animation IDLE. çà implique un fonctionnement "inter-classe" si je puis me permettre d'appeler çà comme çà. Peut être que çà ne vient pas de là non-plus, je peux me planter, mais c'est une idée à laquelle j'ai réfléchie. Au niveau algorythmique çà donnerai : oui tu as raison, mais dans ce cas, j'opterais simplement pour ne rien mettre dans unbind (excepter binded = false), et pour l'animation "IDLE" avoir une classe personnaliser puisque effectivement lorsque tu fait des opération sur "NePlayer" elle désactive la précédente animation Code c++ :pourquoi ? et bien déjà par ce que si aucune animation est active, celle-ci le resteras, et donc ce binderas en dernier et finalement unbind ne réalisais que l'appelle a idle donc inutile bon par contre je voie un autre soucis, c'est si tu utilise une animation en loop = false que ce passe t'il lorsque l'animation ce finie ? ba rien, elle est toujours considéré comme active, donc comment le régler ? barf, tu peut simplement faire une classes qui dérive de irr::scene::IAnimationEndCallBack, tu passe AnimationManager en temps que pointeur dans la constructeur de tas nouvelle class tu le stock et dans OnAnimationEnd tu desactive ton animation, tu peut regarder JumpState comme exemple, je te laisse bidouiller un peut (ça te feras un peut d'exercice ... )puis bon si tout fois tu n'y arrive pas je passerais voir ce qu'il en est edit/ps: bon par contre, tu fait de l'électronique, j'en est fait durant mais études, je vais voir quelle genre d'analogie je peut faire mais honnêtement je n'en voie pas une grosse différence avec la programmations surtout quand on ce raproche des micro-controlleur & porte logique & module |
| Options | Liens officiels | Caractéristiques | Statistiques | Communauté |
|---|---|---|---|---|
|
Préférences cookies Corrections |
![]() ![]() ![]() ![]() |
Propulsé par Django xhtml 1.0 css 2.1 |
884 membres 1440 sujets 11337 messages |
Dernier membre inscrit: Saidov17 150 invités en ligne membre en ligne: - RSS Feed |