Skip to article frontmatterSkip to article content

Tutoriel 6 : Follow Camera, Confiner, State-Driven Camera System, Animator Trigger

IUT d'Orsay, Université Paris-Saclay

Objectifs

Nous allons apprendre à :

CinemachineFollow Camera

  1. Regardez cette vidéo sur Cinemachine.

  2. Dans Package Manager, installez Cinemachine.

  3. Dans Hierarchy, créez un Cinemachine > Virtual Camera et renommez-la Follow Camera.

  4. Dans la composante CinemachineVirtualCamera, changer Body à Framing Transposer et Follow à Player.

  5. Jouez avec les paramètres suivants de la caméra : Screen X, Screen Y, Dead Zone Width, Dead Zone Height, X Damping et Y Damping.

Confiner

  1. Dans Background Tilemap, ajoutez une composante Polygon Collider 2D et définissez une grande zone rectangulaire de confinement dans laquelle la caméra peut bouger. Cette zone va définir le premier niveau du jeu.

  2. Dans la Follow Camera, ajoutez l’extension Cinemachine Confiner 2D et choisissez comme Bounding Shape 2D Background Tilemap.

State-Driven Camera System

Maintenant, nous allons créer plusieurs types de caméras et des transitions entre les différents caméras pour donner un aspect plus dynamique à notre jeu.

Ces caméras vont dépendre de l’état de Player :

  1. Regardez la vidéo suivante sur le State-Driven Camera System.

  2. Dans Hierarchy, créez un objet vide Cameras.

  3. Créez Cinemachine > State-Driven Camera avec le nom State-Driven Camera.

  4. Rendez Main Camera et State-Driven Camera enfant de Cameras.

  5. Renommez Follow Camera à Run Camera et rendez-la enfant de State-Driven Camera.

  6. Dupliquez Run Camera deux fois et renommez-les Idle Camera et Climb Camera.

  7. Jouez avec la Lens Ortho Size de ces caméras et d’autres paramètres pour implémenter les effets mentionnés précédemment.

  8. Dans State Driven Camera, choisissez Player comme Animated Target.

  9. Dans la liste de State, ajouter les états Idling, Running, Climbing et les caméras correspondantes.

  10. Le temps de transition entre deux caméras est en secondes dans Default Blend. Créez Custom Blends (dans Assets/Animations) pour personnaliser les temps de transitions.

Death

Nous voulons permettre à Player de “mourir” quand il touche la layer de l’Enemy.

  1. Ajoutez l’attribut bool isAlive = true dans PlayerMovement.cs et des conditions dans Update, OnMove et OnJump pour que le code s’exécute seulement si Player isAlive.

  2. Faites une animation Death dans l’Animator avec les sprites 16, 17 et 18 et une transition de Any State vers Death utilisant un paramètre Trigger nommé Dying.

  1. Définissez une fonction void Die() qui sera appelée dans Update.

  2. Dans Die, ajoutez une condition qui va vérifier si myBodyCollider a touché la layer de l’Enemy et qui va mettre isAlive à false et myAnimator.SetTrigger("Dying") pour commencer l’animation Death de Player.

Nous allons ajouter un “effet de mort à la Mario” à Player.

  1. Dans Die, désactivez myBodyCollider avec myBodyCollider.enabled = false (de même pour myFeetCollider).

  2. Ajoutez un attribut [SerializeField] float deathKick à PlayerMovement.cs et ajoutez une ligne de code myRigidbody2D.velocity = new Vector2(0f, deathKick); dans Die pour donner une impulsion verticale à Player.

  3. Pour figer la caméra quand Player meurt, importez using Cinemachine dans PlayerMovement.cs et ajoutez l’attribut [SerializeField] CinemachineStateDrivenCamera stateDrivenCamera;. Glissez State-Driven Camera vers l’attribut dans l’Inspector. Puis désactivez la caméra avec stateDrivenCamera.enabled = false; dans Die.

Water and Spikes

  1. Ajoutez des colliders à la Water Tilemap avec l’option Trigger.

  2. Implémentez la mort de Player quand il touche la Water Tilemap.

  3. Utilisez tout ce que vous avez appris pour créer des pics qui tuent le joueur quand il les touche avec ses pieds, mais pas quand il les touche avec son corps : il peut ainsi marcher à travers les pics, mais pas sauter dessus.

  4. Vous pouvez maintenant faire un commit fin du tutoriel 6.