Pacman s'anime... et se coince ^^ - L'école en ligne des programmeurs de jeux vidéo

Pacman s’anime… et se coince ^^

Pacman s'anime... et se coince ^^
Maraudeur Il y a 2 semaines Premium Infinity2

Deux jours ont passés et j’ai beaucoup travaillé, et un peu avancé 🙂

J’avais deux objectifs : animer Pacman, et rendre les tuiles des parois solides.

Pacman est donc maintenant animé, j’ai créé une variable Pacman.frame que je fais évoluer dans l’update à l’appui d’une touche de direction, je vérifie que l’id de la tilesheet correspond à la bonne animation (sinon je fais débuter à la 1ère) et je fais avancer avec le delta time. En code, cela donne ça :

if love.keyboard.isDown("left") then

Pacman.x = Pacman.x - 140*dt
Pacman.frame = Pacman.frame + 15*dt
if Pacman.frame < 56 or Pacman.frame >= 60 then
Pacman.frame = 56
end
end

Dans le draw, “Pacman.frame” est repris dans une variable locale avec math.floor pour servir de paramètre pour le quad à afficher.
C’est repris des ateliers Tilesheet.

Le résultat est correct, mais je devrais le corriger car on passe pour chaque direction d’une bouche totalement ouverte (dernière frame) à une bouche totalement fermée (1ere frame). Ce n’est pas catastrophique car le rendu est correct, mais cet aspect de claquer des dents n’est pas celui que je cherche. On verra ça plus tard, ce n’est pas essentiel.


Mon second défi était de rendre les tuiles solides (les murs) pour que Pacman ne les traverses plus.
Cet objectif n’est que partiellement atteint : j’ai bien identifié, toujours avec l’aide de l’atelier sur les maps, les tuiles de type “wall”, je les rends solides avec la fonction de David, mais s’agissant d’un déplacement rapide pixel par pixel et non pas d’un déplacement case par case comme dans l’atelier, je me retrouve avec un pacman qui se coince dans tous les murs ^^ Bon, au moins ils ne les traverses plus :-p
Pour résoudre ce problème, je viens de demander sur le Discord (j’invite tout le monde à y aller ! C’est super !) comment faire. Mon idée c’est de faire un vrai test de collision rectangle contre rectangle, mais je ne sais pas comment le faire entre un sprite et un quad de tilesheet ! J’ai l’intuition que ce n’est pas compliqué ( comme tous mes problèmes de débutant 😉 )… On verra !

Mon bug de collision …

Il ne faut pas hésiter à demander de l’aide, mais il faut le faire quand vraiment on est bloqué. Généralement, je me donne 2 jours, et plusieurs heures à chercher par moi-même, avant de demander. Question de respect pour les aidants, et de volonté de progresser. Rien de plus satisfaisant que de trouver par soi-même ! Et rien de plus décevant que de se faire livrer une réponse toute cuite et de se rendre compte qu’elle était trouvable avec nos connaissances…


 

Mes prochains objectifs :

  • Réussir mes collisions et pouvoir déplacer Pacman dans son niveau
  • Ajouter les sprites des Pacgums

 

Merci de m’avoir lu 😉

Comments (2)

macfly

Super ça avance!
J’ai vu ta réponse à mon commentaire sur ton 1er devlog.
Vu ce que tu m’as répondu, tu as trouvé la réponse à ton problème mais tu ne t’en es pas rendu compte.
Là ton animation fait ça : {56, 57, 58, 59} puis {56, 57, 58, 59}… et tu voudrais qu’elle fasse ça {56 57, 58, 59, 58, 57} puis {56, 57, 58, 59, 58, 57}.

DeadSystem

salut,
pour ton anim, fait une table, et tu fais une rotation de cette table pour l’animer

anim={56,57,58,59,58,57}
---- pour recuperer l'animation en cours
local currentAnim=anim[1]
-- rotation de la table
local a=anim[1]
table.remove(anim,1)
table.insert(anim,a)
--- ---

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Avatar
Salut c'est David. Est-ce que tu as une question sur la formation ?
Holler Box

Dialoguez avec les autres membres de la gamecodeur school.

Accédez maintenant à notre serveur Discord privé : Entraide, Game Jams, Partage de projets, etc.

Vous devez être membre de la Gamecodeur School Premium pour être autorisé à accéder au serveur.