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

Auteur Sujet: [SFML/Thor]Animation propre.  (Lu 2070 fois)

0 Membres et 1 Invité sur ce sujet

Kaendor

  • Newbie
  • *
  • Messages: 3
    • Voir le profil
[SFML/Thor]Animation propre.
« le: Janvier 05, 2016, 08:56:32 am »
Bonjour, après m'être débattu a travers les diverses installations mal menée de SFML et Thor, j'ai enfin cédé et tout compilé moi même au lieu d'utiliser les binaries. Miracle, tout fonctionne parfaitement.

Du coup si je viens ici, c'est parce que je bloque sur un petit bout de code mais qui s'avèrera central dans le futur du projet que j'ai actuellement ( un A/J-RPG classique ).

Désolé si je ne place pas le topic au bon endroit déjà, je ne voyais pas où le mettre si ce n'est dans Graphics :p.

J'ai un sprite, que j'anime grâce à Animator et AnimationFrame, les animations fonctionnent bien sauf un petit hic, impossible de faire un arret propre, c-a-d, remettre l'animation à 0 quand le joueur relâche la touche de déplacement, l'histoire que le personnage ne garde pas le pied en l'air quand il s'arrête :).


Pour le code que j'ai, mon jeu est décomposé en états organisé avec une pile, on commence sur le menu puis on switch avec un certain input, mon animation se passe sur le second état (gameWorld). Chaque état implémente les fonction handleInput(), update(dt) et draw(dt), qui sont appelées par la boucle principale du jeu en regardant le dessus de la pile.

Maintenant pour l'animation :
Ici c'est ce que je fais quand un input est reçu en dehors du poll d'evenements, juste après pour être exact.
if(sf::Keyboard::isKeyPressed(sf::Keyboard::Z))
    {
        m_joueur.avancer(Direction::Haut);
    }
Et là ma fonction avancer() en question :
void Personnage::avancer(Direction dir)
{
    switch(dir)
    {
    case Haut:
        m_animator.playAnimation("walkUp",true);
        m_sprite.move(0,-2);
        break;
    case Bas:
        m_animator.playAnimation("walkDown",true);
        m_sprite.move(0,2);
        break;
    case Droite:
        m_animator.playAnimation("walkRight",true);
        m_sprite.move(2,0);
        break;
    case Gauche:
        m_animator.playAnimation("walkLeft",true);
        m_sprite.move(-2,0);
        break;
    }
}

Donc mon problème est en deux partie après retest rapide pendant l'écriture de ce post, d'une mon perso bouge mais ne s'anime qu'après le relachement de la touche, pour une raison que j'ignore, et évidement il boucle l'animation après le relâchement grâce au "true", sauf que j'aimerai bien qu'il boucle tant que j'appuie :<.

J'avais pensé à reset le progress de l'Animator, mais il est en private.

Merci beaucoup pour votre aide :).

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : [SFML/Thor]Animation propre.
« Réponse #1 le: Janvier 05, 2016, 09:37:06 am »
Citer
d'une mon perso bouge mais ne s'anime qu'après le relachement de la touche
Parce que tant que la touche est enfoncée, la fonction Personnage::avancer va redémarrer l'animation encore et encore.

Citer
et évidement il boucle l'animation après le relâchement grâce au "true", sauf que j'aimerai bien qu'il boucle tant que j'appuie :<.
Donc, dit autrement, tu voudrais que l'animation stoppe quand tu relâches. Ca me paraît facile à traduire en code ;)

Sinon, as-tu vu la mise à jour toute récente du module d'animation de Thor ? (cf. forum anglais)
Laurent Gomila - SFML developer

Kaendor

  • Newbie
  • *
  • Messages: 3
    • Voir le profil
Re : [SFML/Thor]Animation propre.
« Réponse #2 le: Janvier 05, 2016, 09:49:12 am »
Je me doutais que c'était parce que la fonction appelais sans cesse l'animation, mais du coup je ne vois pas trop comment faire d'autre.
Pour le fait de s'arrêter quand je relâche, j'ai essaye avec un keyreleased, et ça fonctionnais mais du coup ça faisait aucune animation à cause du keypressed, huhu.

Et pour la dernière mise à jour non, je vais aller y jeter un oeil maintenant.

Impossible de trouver un "patchnote" récent de Thor, cependant.
« Modifié: Janvier 05, 2016, 09:51:15 am par Kaendor »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : [SFML/Thor]Animation propre.
« Réponse #3 le: Janvier 05, 2016, 10:02:07 am »
Citer
Je me doutais que c'était parce que la fonction appelais sans cesse l'animation, mais du coup je ne vois pas trop comment faire d'autre.
Ne démarre pas l'animation si elle est déjà en train d'être jouée.

Citer
Impossible de trouver un "patchnote" récent de Thor, cependant.
http://en.sfml-dev.org/forums/index.php?topic=7329.msg140940#msg140940
Laurent Gomila - SFML developer

Kaendor

  • Newbie
  • *
  • Messages: 3
    • Voir le profil
Re : [SFML/Thor]Animation propre.
« Réponse #4 le: Janvier 05, 2016, 10:05:09 am »
Suis-je bête, le pire c'est que j'ai fait ce test pour l'animation avec une autre methode que j'ai testé hier... On va mettre ça sur le compte du manque de sucre hein.

Au temps pour moi pour la patchnote, je pensais qu'elle devais dater de 2016, du coup j'ai pas regardé avant :x.

Merci beaucoup !
« Modifié: Janvier 05, 2016, 10:08:27 am par Kaendor »

 

anything