Collision Checking

Lorsque vous planifiez des mouvements ou décidez de certaines actions, il est souvent important de voir s'il y a des collisions avec d'autres objets à certains endroits dans le monde du jeu, et souvent choisir la bonne collision pour le travail est la tâche la plus importante. GameMaker Studio 2 dispose d'un certain nombre de fonctions intégrées pour vous aider à gérer les collisions correctement et en fonction des besoins de votre projet.

IMPORTANT! Toutes les fonctions de collision fonctionnent en utilisant des positions entières, indépendamment des valeurs d'entrée. Toutes les valeurs non entières seront arrondies à l'entier le plus proche.


Les fonctions suivantes traitent des différentes manières dont vous pouvez avoir une vérification d'instance pour les collisions avec une autre instance:


Les routines suivantes peuvent être utilisées pour cela (ainsi que d'autres fonctions détaillées dans les sections relatives au déplacement et aux instances ). Ces fonctions de collision fonctionnent toutes différemment mais elles conservent trois arguments communs que nous allons expliquer ici:

  • obj. C'est ici que nous spécifions l'objet avec lequel la fonction doit vérifier la collision. Il peut s'agir d'un ID d'instance, d'un type d'objet ou du mot clé spécial GM all. Il convient également de noter que si le type d'objet choisi est le parent désigné d'autres objets, tous les enfants de cet objet seront également inclus dans cette vérification.


  • préc. Cela peut être soit true ou false et concerne la précision de la vérification de collision. Si défini sur true, alors des collisions précises doivent être calculées (mais seulement si l'objet à vérifier a "précis" marqué pour sa détection de collision dans ses propriétés de masque) ce qui est une tâche légèrement plus complexe pour le CPU et doit donc être utilisé avec prudence. Si false les collisions seront alors calculées en fonction du cadre de délimitation de l'objet à vérifier.


  • notme. Vous devrez peut-être vérifier les collisions avec un objet qui a le même index que l'objet qui exécute le code. Par conséquent, pour empêcher le code de trouver une collision avec lui-même, vous pouvez définir cette option sur true. Si vous recherchez spécifiquement l'instance de l'objet exécutant le code, ou si ce n'est pas important, il peut être laissé comme false.

Toutes ces fonctions renvoient soit l'identifiant d'une instance trouvée en collision, soit le mot-clé spécial noone lorsqu'il n'y a pas de collision. Notez que s'il y a plusieurs collisions avec les zones définies par ces fonctions et instances de l'objet donné, un seul ID d'instance est renvoyé et il peut s'agir de l'une des instances de la collision.

Les fonctions suivantes concernent les collisions avancées.


Toutes les fonctions ci-dessus sont liées à des instances de vérification de collision et s'appuient en tant que telles sur le masque de collision défini pour l'instance. Cependant, il y a beaucoup de moments où vous devez rechercher des "collisions" avec un point ou une zone, spécialement quand votre instance n'a pas de sprite assigné, ou quand vous travaillez avec la souris etc... Donc GameMaker Studio 2 aussi fournit les fonctions suivantes pour vous aider dans ces situations:


Lors de l'utilisation de la construction en physique, les fonctions de collision ci-dessus ne sont pas garanties pour fonctionner pour les instances activées par la physique. Ceci est principalement dû au fait que ces cas ne plus utiliser la majorité des construit régulièrement dans les variables ( au lieu, la physique des instances permis ont leur propre ensemble de variables ) et n'utilisent-ils le masque de collision ou boîte englobante, car ils utilisent des appareils au lieu. Cependant, il existe une fonction spéciale pour tester les collisions avec la physique activée qui vérifie les appareils qui se chevauchent: