Bonjour,
Je viens poster sur ce forum pour essayer de trouver des solutions et de comprendre ce que je fais mal. Il existe peut être des réponses similaires à mon problèmes, n'hésitez pas à me les linker, je ne sais juste pas quoi chercher pour les trouver.
Ensuite voilà mes problèmes:
-J'essaye de réaliser un jeu, pour cela je créer une classe spéciale pour gérer les animations. Cette classe hérite sf::Drawable et de sf::Transformable pour pouvoir l'afficher à l'écran. La fonction virtual draw est juste copiée depuis le tutoriel (aucune modification). Cette classe est composée d'une liste d'image, chaque image étatnt une frame de la texture. Ce que je fais est, quand j'appelle une fonction, si un certain est écoulé (temps entre deux frame), je change la frame a affiché. Pour cela, j'ai un nombre qui me permet de choisir la bonne image dans la liste, puis j'update la texture avec la fonction en question. Cependant cela ne fonctionne pas, rien n'est affiché à l'écran.
Mon deuxième problème est pour gérer le delai entre deux frame. Pour cela, je déclare une Clock spécifique à ma classe, que je restart à chaque fois qu'une animation passe. Cependant, cette clock ne restart jamais.
Voila à quoi resemble ma fonction update de ma classe animation (Dans le main, pour l'affichage, j'appelle la fonction update puis draw)
//m_clock étant la clock créer pour gérer le temps, m_delay le temps entre deux animation et
//m_frame** les différents liste comprenant les image des animations (une pour chaque direction)
void Animation::update()
{
if (m_clock.getElapsedTime().asMilliseconds() >= m_delay) {
m_clock.restart();
m_index++;
if (m_index < m_frame)
m_index = 0;
switch (m_dir)
{
case 0:
m_texture.update(m_frameUP[m_index]);
break;
case 1:
m_texture.update(m_frameRI[m_index]);
break;
case 2:
m_texture.update(m_frameDO[m_index]);
break;
case 3:
m_texture.update(m_frameLE[m_index]);
break;
default:
m_texture.update(m_frameUP[m_index]);
break;
}
}
}
Qu'est-ce qui ne marche pas dans ce code? Est-ce la bonne solution pour faire des animations (utilisés des liste d'image) ou est-ce qu'il y a une autre solution?
Merci d'avance pour vos réponses et vos indications,
Saphirant