Un peu de contexte

Si vous avez commencé à jouer avec le composant RigidBody2D permettant de soumettre le GameObject concerné à la gravité (plus de détails dans cet article), vous avez surement remarqué que votre objet tombe à l’infini.

Il y a une solution très simple pour permettre à votre objet d’éviter de tomber à l’infini et même mieux de réagir physiquement aux objets qui l’entourent avec un principe de collisions.

Les Colliders 2D

Le composant Collider 2D est la solution pour permettre à vos objets de réagir physiquement les uns par rapport aux autres.

Ce composant est décliné en différentes versions afin de correspondre au mieux à la forme de l’objet sur lequel le composant s’applique. Ainsi, on pourra utiliser les composants suivants :

  • Box Collider 2D : va s’apdater nautuellement aux objets rectangulaires ;
  • Capsule Collider 2D : va s’adapter aux objets en forme de capsule ;
  • Circle Collider 2D : va s’adapter aux objets circulaires ;
  • Custom Collider 2D: va s’adapter à n’importe quelles formes ;
  • Edge Collider 2D : va s’adapter à un bord ;
  • Polygon Collider 2D : va s’adapter à une forme polygonale ;
  • Tilemap Collider 2D : va s’adapter aux tuiles (Tiles) d’un Tilemap ;
  • Composite Collider 2D : va permettre de fusionner n’importe quels Box Collider 2D ou Polygon Collider 2D.
Colliders 2D disponibles

Création de la scène

Nous allons pour commencer ajouter un GameObject Circle à notre scène avec le composant RigidBody2D afin de le soumettre à la gravité.

Cette étape ayant été explicitée au travers d’un autre article, je vous invite à aller le lire avant de continuer.

Vous devriez avoir le résultat suivant (la position du cercle, les couleurs, la taille de la fenêtre n’ont pas d’importance) :

GameObject Circle soumis à la gravité
avec le composant RidigBody2D

Vous allez à présent ajouter un ensemble de 3 GameObjects Square à votre scène afin de représenter un sol, un mur droit et un mur gauche (à vous de changer la couleur et redimensionner les carrés pour correspondre à votre scène). Vous devriez avoir un résultat similaire à celui-ci:

Notre scène avec notre cercle, un sol et des murs

Si on lance le jeu, notre cercle tombera et traversera notre sol.

C’est là qu’intervient les Colliders ; il vous faut donc ajouter le composant Box Collider 2D à nos GameObjects sol, mur droit et mur gauche et il faut également ajouter le composant Circle Collider 2D à notre GameObject cercle.

Ajout d’un Circle Collider 2D à notre object Circle
Aperçu des propriétés du composant Circle Collider 2D
Ajout d’un Box Collider 2D à un des objets Square
Aperçu des propriétés du composant Box Collider 2D

Une fois vos 4 GameObjects configurés avec un Collider2D, vous pouvez lancer le jeu et vous devriez normalement observer que la balle va s’arrêter de tomber de manière nette au contact du sol.

Collision entre 2 GameObjects

Vous pouvez aller plus loin en rajoutant des objets rectangulaires afin de représenter des inclinaisons et par la même occasion multiplier le nombre de cercles qui tombent.

Vous pouvez facilement dupliquer un GameObject de l’écran Hierarchy à l’aide du raccourci ctrl + D.

Une fois votre scène configurée, vous devriez avoir un résultat similaire à ceci :

Résultat final

Le tout en vidéo !