Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: [Résolu] Problème système d'animation  (Lu 2372 fois)

0 Membres et 1 Invité sur ce sujet

Xotraz

  • Newbie
  • *
  • Messages: 13
    • Voir le profil
[Résolu] Problème système d'animation
« 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.
« Modifié: Juillet 04, 2013, 05:39:26 pm par Xotraz »

Xotraz

  • Newbie
  • *
  • Messages: 13
    • Voir le profil
Re : Problème système d'animation
« Réponse #1 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.

Nexus

  • SFML Team
  • Hero Member
  • *****
  • Messages: 6287
  • Thor Developer
    • Voir le profil
    • Bromeon
Re : [Résolu] Problème système d'animation
« Réponse #2 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".
Zloxx II: action platformer
Thor Library: particle systems, animations, dot products, ...
SFML Game Development:

Xotraz

  • Newbie
  • *
  • Messages: 13
    • Voir le profil
Re : [Résolu] Problème système d'animation
« Réponse #3 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.