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 Window > Package Management > Package Manager, installez Cinemachine.
Dans Hierarchy, créez une Cinemachine > Targeted Camera > Follow Camera et renommez-la
Follow Camera.Choisissez Player comme Tracking Target et None comme Rotation Control.
Vérifiez que votre la composante Cinemachine Brain de votre Main Camera est activée.
Jouez avec les paramètres Lens et Position Damping et testez votre caméra en mode Play.
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.
Cette zone peut toujours être modifiée plus tard selon le design de votre niveau.
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.
Dans Hierarchy, créez un objet vide Cameras.
Créez Cinemachine > 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. Supprimez les autres enfants de State-Driven Camera s’il en existe.
Jouez avec la Lens de ces caméras 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 Idle, Running, Climbing et les caméras correspondantes.
Changez le temps de Default Blend > Ease In Out pour rendre les transitions entre les caméras plus fluides.
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 avec le sprite
characters_6et ajoutez-la à l’Animator avec une transition de Any State vers Death utilisant un paramètre Trigger nommé Dying.
Définissez une fonction
void Die()qui sera appelée dansUpdatedePlayerMovement.cs.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.linearVelocity = new Vector2(0f, deathKick);dansDiepour donner une impulsion verticale à Player.Pour figer la caméra quand Player meurt, importez
using Unity.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¶
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 (sprite
tiles_126) 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.