Historique des modifications - Message

Message #11673

Sujet: Système d'animation d'irrlicht


Type Date Auteur Contenu
Dernière modification 17-06-2015 10:56:13 jonath313
Ok, l'initialisation je l'ai faite :

Code c++ :


GenericState::GenericState(IAnimatedMeshSceneNode* NPlayer,int AnimPriority, int FrameStart, int FrameEnd, bool Frameloop)
{
    NodePlayer = NPlayer;
    Apriority = AnimPriority;
    start = FrameStart;
    end = FrameEnd;
    loop = Frameloop;
    activated = binded = false;
}


Les animations IDLE et RUNNING ne se lancent pas. Par contre SWIMMING fonctionne, çà doit provenir de cette partie :

Code c++ :


       anim.push_back(new GenericState(NPlayer,0,1,10,false)); // idle ?
        anim.push_back(new GenericState(NPlayer,1,10,80,true)); // running ?
       anim.push_back(new GenericState(NPlayer,2,80,160,true)); // swimming ?

Si j'utilise que la troisième ligne seule cette animation fonctionne, çà vient du push_back ? (Visiblement c'est la dernière animation qui l'emporte, ce n'est pas une question de priorité d'après ce que j'ai vu)

Ensuite il y a autre chose qui ne va pas et je ne sais pas pourqoi çà fait cela : Si j'appui sur SWIMMING (la seule qui fonctionne), l'animation se joue mais dès que j'appui sur une autre touche, elle se coupe. C'est ennuyeux si je ne peux pas faire tourner la caméra pendant que le personnage avance par exemple:

Code c++ :


 if(event.EventType == irr::EET_KEY_INPUT_EVENT ){
animat->activate(EAS_SWIMING, event.KeyInput.Key == irr::KEY_SPACE && event.KeyInput.PressedDown == true & 0b000001); // Fonctionne
animat->activate(EAS_RUNNING, event.KeyInput.Key == irr::KEY_KEY_Z && event.KeyInput.PressedDown == true & 0b000001); // Fonctionne pas
 }

Merci pour tas patience.


EDIT: J'ai trouvé la réponse pour le premier probleme (Seule animation SWIMMING), il faut ajouter :

Code c++ :


 anim.push_back(new GenericState(NPlayer,0,1,10,false)); // idle ?
...
std::sort(anim.begin(), anim.end());

Pour l'utiliser j'avais juste à ajouter la librairie :

Code c++ :


#include <algorithm>    // std::sort


Après pour le second problème je n'ai pas encore trouvé pourquoi quand j'appui sur une autre touche que celle concerné, çà me stop l'animation.
Création du message 17-06-2015 10:37:51 jonath313
Ok, l'initialisation je l'ai faite :

Code c++ :


GenericState::GenericState(IAnimatedMeshSceneNode* NPlayer,int AnimPriority, int FrameStart, int FrameEnd, bool Frameloop)
{
    NodePlayer = NPlayer;
    Apriority = AnimPriority;
    start = FrameStart;
    end = FrameEnd;
    loop = Frameloop;
    activated = binded = false;
}


Les animations IDLE et RUNNING ne se lancent pas. Par contre SWIMMING fonctionne, çà doit provenir de cette partie :

Code c++ :


       anim.push_back(new GenericState(NPlayer,0,1,10,false)); // idle ?
        anim.push_back(new GenericState(NPlayer,1,10,80,true)); // running ?
       anim.push_back(new GenericState(NPlayer,2,80,160,true)); // swimming ?

Si j'utilise que la troisième ligne seule cette animation fonctionne, çà vient du push_back ? (Visiblement c'est la dernière animation qui l'emporte, ce n'est pas une question de priorité d'après ce que j'ai vu)

Ensuite il y a autre chose qui ne va pas et je ne sais pas pourqoi çà fait cela : Si j'appui sur SWIMMING (la seule qui fonctionne), l'animation se joue mais dès que j'appui sur une autre touche, elle se coupe. C'est ennuyeux si je ne peux pas faire tourner la caméra pendant que le personnage avance par exemple:

Code c++ :


 if(event.EventType == irr::EET_KEY_INPUT_EVENT ){
animat->activate(EAS_SWIMING, event.KeyInput.Key == irr::KEY_SPACE && event.KeyInput.PressedDown == true & 0b000001); // Fonctionne
animat->activate(EAS_RUNNING, event.KeyInput.Key == irr::KEY_KEY_Z && event.KeyInput.PressedDown == true & 0b000001); // Fonctionne pas
 }

Merci pour tas patience.


EDIT: J'ai trouvé la réponse pour le premier probleme (Seule animation SWIMMING), il faut ajouter :

Code c++ :


 anim.push_back(new GenericState(NPlayer,0,1,10,false)); // idle ?
...
std::sort(anim.begin(), anim.end());

Pour l'utiliser j'avais juste à ajouter la librairie :

Code c++ :


#include <algorithm>    // std::sort


Après pour le second problème je n'ai pas encore trouvé pourquoi quand j'appui sur une autre touche que celle concerné, çà me stop l'animation.

Retour

Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
154 invités en ligne
membre en ligne: -
RSS Feed