Forum de la communauté SFML

Aide => Général => Discussion démarrée par: Xotraz le Juillet 01, 2013, 07:35:06 pm

Titre: [Résolu] Problème système d'animation
Posté par: Xotraz le Juillet 01, 2013, 07:35:06 pm
Bonjour, je reviens ici car non sans peine j'ai fait un système d'animation.
Il n'est pas mauvais mais il ne fonctionne pas comme je le voudrais.

Le principe c'est que je dit Animation.Jouer(Bouger) et là il bouge, mais s'il ne bouge plus je dis Animation.Jouer(Rien) et là il ne fais plus rien.

Sauf que je crois qu'il ne bouge pas en continue et que donc il ne fais rien tout le temps.

Le code qui pose problème.
void Animation::Jouer(std::string Nom, int Vitesse)
{
if (_A_Lecture != _Ref_Animation->Numero_Anim(Nom))
{
_Etape_Lecture = 0;
_A_Lecture = _Ref_Animation->Numero_Anim(Nom);
}
}

void Animation::Changer_Frame(void)
{
if(_A_Lecture == -1)
{
_Etape_Lecture = 0;
_A_Lecture = 0;
}
_Frame = _Ref_Animation->Frame(_A_Lecture,_Etape_Lecture);

int x,y;
x = _Frame % _Ref_Animation->_Nombre_Frame_X * _Ref_Animation->_Taille_Frame.x;
y = _Frame / _Ref_Animation->_Nombre_Frame_X * _Ref_Animation->_Taille_Frame.y;

sf::IntRect Zone(x, y, _Ref_Animation->_Taille_Frame.x, _Ref_Animation->_Taille_Frame.y);
_Sprite->setTextureRect(Zone);


_Etape_Lecture += 1;
if (_Etape_Lecture >= _Ref_Animation->Nombre_Frame(_A_Lecture))
{
_Etape_Lecture = 0;
}
}
 
Et celui qui détermine les actions du personnage.
 if ((_d_x != 0) || (_d_y != 0))
 {
     _Anim.Jouer("Marcher",20);

     if (Touche_Gauche == false && Touche_Droite == false && Touche_Haut == false && Touche_Bas == false)
     {
         Bouger(_d_x,_d_y,elapsed);
     }

 }
 else _Anim.Jouer("Rien",20);

 Recharger();

 _Anim.Changer_Frame();

Donc pour résumé même s'il y a mouvement l'animation joué est Rien.
Et pourtant ce mouvement est continue :
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))  Element_G->Joueur(0)->Va_Gauche = true;

J'ai surement mal fais la chose.
Titre: Re : Problème système d'animation
Posté par: Xotraz le Juillet 04, 2013, 05:38:53 pm
Bon enfaite ils suffisaient d'activer la limitation de frame rate et la synchronisation vertical.

Et voilà, en plus j'ai entre 0 et 3 % d'UC utilisé maintenant.
Titre: Re : [Résolu] Problème système d'animation
Posté par: Nexus le Juillet 04, 2013, 05:50:39 pm
A propos, les noms qui commencent avec "_" et un lettre majuscule (comme _Frame) sont réservés pour le compiler et la bibliothèque standard. Par exemple, un header qui definit un tel macro peut introduire des bugs très difficiles à trouver.

Pour les membres, tu peux juste utiliser "mAnim", "m_Anim", "m_anim" ou "anim".
Titre: Re : [Résolu] Problème système d'animation
Posté par: Xotraz le Juillet 05, 2013, 04:23:42 pm
Merci j'avais déjà entendu ça mais trop tard je vais garder cette typo même si c'est mal.