Tutoriel 6 : Follow Camera, Confiner, State-Driven Camera System, Animator Trigger
Objectifs¶
Nous allons apprendre à :
- créer une follow caméra,
- confiner la caméra,
- créer un système de caméra dynamique qui dépend de l’état du joueur,
- utiliser des triggers dans l’Animator et
- désactiver des composantes de Game Objects.
CinemachineFollow Camera¶
Regardez cette vidéo sur Cinemachine.
Dans Package Manager, installez Cinemachine.
Dans Hierarchy, créez un Cinemachine > Virtual Camera et renommez-la Follow Camera.
Dans la composante CinemachineVirtualCamera, changer Body à Framing Transposer et Follow à Player.
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¶
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.
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 :
- Quand Player est en train de courir, nous avons envie de dézoomer la caméra pour voir ce qui est devant lui.
- Quand il ne fait rien, nous voulons zoomer sur lui pour donner un peu de personnalité.
- Quand il monte à une échelle, nous voulons aussi dézoomer car il “voit” plus loin quand il est en hauteur.
Regardez la vidéo suivante sur le State-Driven Camera System.
Dans Hierarchy, créez un objet vide Cameras.
Créez Cinemachine > State-Driven Camera avec le nom State-Driven Camera.
Rendez Main Camera et State-Driven Camera enfant de Cameras.
Renommez Follow Camera à Run Camera et rendez-la enfant de State-Driven Camera.
Dupliquez Run Camera deux fois et renommez-les Idle Camera et Climb Camera.
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.
Dans State Driven Camera, choisissez Player comme Animated Target.
Dans la liste de State, ajouter les états Idling, Running, Climbing et les caméras correspondantes.
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.
Ajoutez l’attribut
bool isAlive = truedansPlayerMovement.cset des conditions dansUpdate,OnMoveetOnJumppour que le code s’exécute seulement si PlayerisAlive.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.
Définissez une fonction
void Die()qui sera appelée dansUpdate.Dans
Die, ajoutez une condition qui va vérifier simyBodyCollidera touché la layer de l’Enemy et qui va mettreisAliveàfalseetmyAnimator.SetTrigger("Dying")pour commencer l’animationDeathde Player.
Nous allons ajouter un “effet de mort à la Mario” à Player.
Dans
Die, désactivezmyBodyCollideravecmyBodyCollider.enabled = false(de même pourmyFeetCollider).Ajoutez un attribut
[SerializeField] float deathKickàPlayerMovement.cset ajoutez une ligne de codemyRigidbody2D.velocity = new Vector2(0f, deathKick);dansDiepour donner une impulsion verticale à Player.Pour figer la caméra quand Player meurt, importez
using CinemachinedansPlayerMovement.cset ajoutez l’attribut[SerializeField] CinemachineStateDrivenCamera stateDrivenCamera;. Glissez State-Driven Camera vers l’attribut dans l’Inspector. Puis désactivez la caméra avecstateDrivenCamera.enabled = false;dansDie.
Water and Spikes¶
Si vous êtes en retard...
Faites un commit fin du tutoriel 6 et passez au tutoriel suivant.
Cette partie sera quand même notée (non optionnelle).
Ajoutez des colliders à la Water Tilemap avec l’option Trigger.
Implémentez la mort de Player quand il touche la Water Tilemap.
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.
Vous pouvez maintenant faire un commit
fin du tutoriel 6.