❤ 0 Bonjour, bienvenue dans ce tutoriel.
Je vais vous expliquer ce qu'un masque de collision.
Comme son nom l'indique plus ou moins, il vous permettra de faire des collisions parfaites entre personnages et décors.
On va commencer avec un exemple, vous aimeriez faire un jeu de plates-formes. Vous programmez votre système, pour les collisions, vous faites "si sprite_héros touche décors" => "stopper mouvement".
GROSSE ERREUR !
En effet, même si le système sera fonctionnel, il sera buggé, et extrêmement soulant pour le joueur!
Pourquoi ?
Voyons cela en image :
Super, ça marche, le héros peut se déplacer sur le sol, essayons maintenant de sauter par dessus ce pilier. Heu... Le héros maintient en équilibre avec seulement 1 pixel, trop fort.
Vous comprenez ?
En faisant "si sprite_héros touche décors" le programme va prendre en compte tout le sprite, vous aurez beau toucher un mur d'un pixel, ça suffira pour stopper le mouvement.
Or dans un jeu de plates formes, il est préférable que la zone de détection soit le la tête, le buste, et les jambes.
Heureusement, les masques de collisions sont la pour nous sauver la vie.
Plutôt que de prendre en compte le sprite dans la condition, on va créé un nouveau sprite, en forme de rectangle sur le héros, qui servira de test pour la condition.
C'est ultra simple : On place le rectangle sur le héros, on le rend invisible pendant le jeu, et on peut faire la condition :
"si masque_héros touche décors" => "stopper mouvement"
De ce fait,
Plus de problèmes pour des pixels qui dépassent, puisque la collision est testée avec le carré et non le héros.
Voila, vous voyez, c'était ultra simple !
N'oubliez pas de bien placer le rectangle sur le héros, et de le déplacer en même temps que ce dernier pendant le jeu.
Sachez aussi que les masques s'utilisent pour tout, décors, adversaire, PNJ, etc...
Prenez par exemple une map du projet de Qb!k, Trinity Blade. Voilà à quoi elle ressemble in game :
J'espère avoir été clair, sachez que si vous voulez des collisions parfaites, il n'y a pas d'autres solutions
Mis à jour le 13 février 2021.
Images restaurées à partir de Trinity Blade, un jeu de plateformes réalisé par Qb!k.
|