Licence CC BY

Théorie des collisions

La théorie autours des collisions d'objets dans les jeux vidéo.

Le cours original a été publié sur le Site du Zéro par fvirtman. Tous les crédits lui reviennent.

Vous programmez un jeu vidéo, et vous vous intéressez aux collisions d’objets. Est-ce-que mon personnage touche un ennemi ? Est-ce-qu’il touche le sol ? Est-ce-que mon curseur de souris, un viseur, touche un ennemi ? Tout ceci, ce sont des tests de collision. Les collisions sont un aspect fondamental de tout jeu d’action ou d’animation en général.

Nous considèrerons une ou plusieurs fonctions Collision qui prendront en paramètre 2 objets, ou un objet et un monde fait de sols et de murs. Et ces fonctions renverront simplement un booléen, ayant donc pour valeur oui ou non, selon si ça touche ou non.

Toute la gestion des collisions s’appuiera sur ces fonctions. Selon votre jeu, selon vos besoins, les fonctions de collisions seront différentes, mais renverront toujours « oui » ou « non ».

Comment implémenter ces fonctions de collision en fonction de vos besoins ? C’est la raison d’être de ce tutoriel, qui vous présentera plusieurs méthodes. Les quelques fonctions d’exemple qui illustreront les différents cas seront codées en C, cependant facilement transposables dans d’autres langages.

Collisions en 2D

  1. Formes simples

    1. Point dans AABB

    2. Collision AABB

    3. Cercles

  2. Formes plus complexes

    1. Point dans polygone

    2. Segment — Cercle

    3. Segment — Segment

    4. Cercles — AABB

  3. Collisions au pixel près

    1. Utilisation de masques

    2. Pixel perfect

  4. Décor

    1. Sol

    2. Tiles droits

    3. Tiles isométriques

  5. Partitionnement

    1. Problématique

    2. La grille

    3. Le quadtree

    4. Le BSP 2D

  6. Sprites enrichis

    1. Point chaud et point d'action

    2. Sous AABB

  7. Collisions spécifiques

    1. Pong

    2. Course vue du dessus

    3. Labyrinthe

Collisions en 3D

  1. Formes simples

    1. AABB 3D

    2. Sphères

  2. Sol

    1. Heightmap



Ces contenus pourraient vous intéresser

4 commentaires

Merci pour ton "tutoriel" vraiment complet. Je m’intéresse a la création d’un petit jeu en 2d et j’hésiter a utiliser un moteur déja existant ou alors créer le mien et gérer un peu tout.

Langelidou

Ca dépend si tu veux te concentrer sur le résultat ou sur la réalisation, et si t’attarder sur la collision t’intéresse, si tu gères toi même la collision, tu devras aussi gérer toi même la gravité, vitesse.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte