La galère des collisions
Thibault Baron Il y a 4 mois Premium Pro - Adhésion à vie2

Bon. J’écris ce devlog car ça fait quand même un bon moment que je galère.

Après avoir réussi à animer mon personnage, je dois gérer les collisions sur la tilemap.

Ma première idée était de simplement utiliser une collision avec l’image en elle même. Mais j’avais pas mal de problème en ce qui concernait l’offset de mon image. La largeur et la hauteur de l’image me posaient également problème puisqu’elles se modifient constamment à cause des rotations de mon image.

J’ai finalement décidé de me tourner vers une autre méthode, créer une hitbox pour mon personnage. Cette hitobx englobe la tête et sera le point de repère pour toutes les collisions. Ainsi j’ai juste besoin de tester la collisions avec les caisses se trouvant sur la carte et si la collision existe remettre le joueur à sa position initiale, me direz-vous. Bah oui mais non. En effet, les caisses faisant partie de la tilemap, je peux simplement tester si un coin de la hitbox se trouve à un endroit avec 245 (index de la boîte) dans la tilemap.

Je vais donc devoir procéder ainsi :

  • Ma première étape sera de faire une table répertoriant des carrés, chaque carré représentant une caisse de la map.
  •  Ensuite seulement, je pourrai lors du déplacement  de mon personnage, je pourrai tester la collision entre la hitbox de mon personnage et le carré de la caisse

Afin de coder le carré de la caisse, je compte utiliser la même méthode que celle m’ayant servi à créer la hitbox du personnage. C’est tout bête mais si ça peut aider quelqu’un, je vous met mon code :

 

player.hitbox = {}
player.hitbox.x = player.x - player.ox
player.hitbox.y = player.y - player.oy
player.hitbox.size = 22

 

NB : La hitbox étant un carré, la valeur player.hitbox.size regroupe à la fois la hauteur et la largeur.

 

Donc voilà. Ce devlog était surtout utile pour moi afin de me faire une idée concise de comment j’allais gérer mes collisions. Ainsi le fait de l’avoir écrit me permet de mieux le concevoir.

Pour terminer je vous laisse avec un petit screenshot du troisième niveau (niveau que j’utilise pour faire mes tests puisqu’il a une caisse avec un positionnement idéal) :

Le rectangle rouge représente la hitbox.

Sur ce je retourne coder et je vous souhaite une bonne journée ainsi qu’un bon code !

Comments (2)

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.