Quand il touche un mur, il change de direction.arius a écrit :C'est pas quand il touche un mur?Bubu a écrit : L'état mourir est déclenché si Mario lui tombe dessus.
Les deux états aller vers la droite 1 et 2 (animation quand il avance) sont juste enchainés en fonction du temps.
Pareil pour la gauche.
Et ainsi de suite.
La succession droite1 droite2 devient gauche1 gauche2, et vice-versa.
J'implémente ça souvent en utilisant des enum pour les différents états.
Et je gère chaque état dans un switch
Là, ça pourrait être, si je ne me trompe pas.
EtatChampignon {droite1, droite2, gauche1, gauche2, tomber, mourir}
switch (etatChampignon) {
cas droite1 :
si collision, gauche1
sinon droite2 après un délai
avancer un peu vers la droite.
s'il est hors champ, le réinitialiser en position et état
si vide en dessous, état tomber
cas droite2 :
si collision, gauche2
sinon droite1 après un délai
avancer un peu vers la droite.
s'il est hors champ, le réinitialiser en position et état
si vide en dessous, état tomber
cas gauche1 :
cas gauche 2 :
l'inverse respectif de droite1 et droite2
cas tomber :
baisser verticalement un peu.
si hors de l'écran, réinitialiser position et état.
cas mourir :
retourner le sprite, et baisser verticalement.
s'il sort de l'écran, supprimer l'automate
}
quelque soit l'état courant, si Mario détecte une collision avec lui vers le bas, mettre état mourir
quelque soit l'état courant, si Mario détecte une collision avec lui sur les cotés ou vers le haut, Mario passe en état mourir, ce qui déclenche la fin de la partie.
(L'état initial dépend de sa position relative à celle de Mario, pour qu'il s'en rapproche)
Les changements de position sont proportionnels au temps écoulé depuis la dernière frame. (Codés sous forme de vitesse, et parfois d'accélération)
Après c'est approximatif, hein, c'est plus pour donner l'idée qu'autre chose, car tomber il y a 4 états aussi. Car il continue d'avancer en tombant et à être animé. (Entre autres que j'oublie surement)
Après on pourrait aussi faire un automate pour changer les sprites, et un autre pour changer le comportement.
Ensuite il faut paramétrer l'automate. Régler ses vitesses, ses accélérations et ses délais d'attente.