Tutoriel 5 : Collider Trigger, Kinematic Body Type
Objectifs¶
Dans ce tutoriel, nous allons apprendre à utiliser un Trigger dans un Collider.
Tests
Il ne faut pas oublier de tester régulièrement les nouvelles fonctionnalités dans le Play mode et sortir du Play mode quand vous avez besoin de modifier des paramètres du jeu.
Climb¶
- Dans Sprite Editor de la tile SPA_Ladder, choisissez Custom Physics Shape (au lieu de Sprite Editor en haut à gauche) et dessinez la forme suivante.

Créez la Climbing Tilemap avec des échelles et y mettre les bonnes layers.
Ajoutez les Tilemap Collider 2D et Composite Collider 2D à Climbing Tilemap.
Changez Body Type dans Rigidbody 2D à Static, cochez Is Trigger dans Composite Collider 2D et cochez Used by Composite (Composite Operation > Merge) dans Tilemap Collider 2D.
Modifiez la Layer Collision Matrix pour que la User Layer de Climbing Tilemap ne puisse qu’interagir qu’avec le Player.
Récupérez
CapsuleCollider2D myBodyColliderdansPlayerMovement.cs.Implémentez
bool isTouchingALadder().Ajoutez la méthode
void ClimbLadderque nous allons appeler à la fin duUpdate.Ajoutez un attribut
float climbSpeedet imitez le code deRunpour implémentez une première version deClimbLadder().
Pour régler le problème de la gravité, nous allons changer la gravité de Player à 0 quand il est sur une échelle avec
myRigidbody2D.gravityScale = 0f.Il faut remettre la bonne gravité quand Player ne touche plus l’échelle donc définissez un attribut
float gravityScaleAtStartet récupérez la valeur demyRigidbody2D.gravityScaledansStart.Quand Player ne touche plus l’échelle, il faut remettre
myRigidbody2D.gravityScaleàgravityScaleAtStart.
Réglez le premier problème en ajoutant une ligne de code dans
else.Réglez le deuxième problème en modifiant la condition de
setBooldansif.
Enemy¶
- Utilisez ce que vous avez appris pour créer un Enemy dans la scène (sauvegardé en tant que prefab) avec les bonnes layers, les bonnes interactions dans la Layer Collision Matrix, un sprite, une seule animation, un Capsule Collider 2D (avec l’option Is Trigger) et un Rigidbody 2D (avec Kinematic comme Body Type).
Dans
Assets/Scripts, créezEnemyMovement.csdans lequel nous allons définir[SerializeField] float moveSpeedet récupérer la composanteRigidbody2D myRigidbody2D.Dans
Update, modifiez la vitesse horizontale dansmyRigidbody2DavecmoveSpeed.
Nous devons maintenant permettre à Enemy de faire des allers-retours. Pour cela, nous allons ajouter un champ de vision à Enemy, qui sera un Box Trigger. Dès qu’il ne “voit” plus Platforms, il fera demi-tour.
- Créer un Box Collider 2D avec Is Trigger devant Enemy qui descend un peu dans le sol.

Ajoutez
OnTriggerExit2D(Collider2D other)dansEnemyMovement.csqui changemoveSpeeden-moveSpeedpour que Enemy se déplace dans l’autre direction.Ajoutez aussi une fonction
FlipEnemyFacingqui changelocalScalede Enemy pour que le sprite tourne aussi dans la bonne direction.Vous pouvez maintenant faire un commit
fin du tutoriel 5.