Tutoriel Unity Cinemachine et Timeline
Cinemachine est un package pour Unity qui donne aux développeurs un contrôle professionnel de la caméra et améliore la capacité de créer des cinématiques cinématographiques.
Ce didacticiel couvrira les sujets suivants:
- Installation de cinémachine
- Configuration de la caméra à la troisième personne
- Création de la cinématique de la chronologie
Installation de cinémachine
Pour installer Cinemachine, suivez les étapes ci-dessous:
- Dans Unity, accédez à Fenêtre -> Gestionnaire de packages
- Remplacez les packages par "Unity Registre"
- Sélectionnez "Cinemachine" dans la liste, puis cliquez sur "Install"
La Cinemachine est maintenant prête à l'emploi.
Configuration de la caméra à la troisième personne
Ci-dessous, je montrerai comment configurer une caméra à la 3e personne à l'aide de la caméra virtuelle de Cinemachine.
Une caméra virtuelle est une version allégée d'une caméra Unity, qui ne s'affiche pas seule, mais est simplement utilisée comme point de référence pour la caméra principale.
Comme exemple pour ce didacticiel, j'utiliserai une manette à la troisième personne, sauf sans configurer la collision de la caméra et sans déplacer la caméra à l'intérieur de la hiérarchie des joueurs:
Comme vous pouvez le voir, le joueur bouge mais la caméra ne suit pas.
Configurer une caméra à la troisième personne avec Cinemachine est vraiment simple:
- Allez dans GameObject -> Cinemachine -> Virtual Camera pour créer une nouvelle caméra virtuelle
- Nommez la caméra virtuelle "TPS Camera"
- Sélectionnez TPS Camera et dans CinemachineVirtualCamera, attribuez la variable Follow (dans mon cas, ce sera l'objet "CameraParent", qui est situé à l'intérieur d'une hiérarchie de lecteur et représente la rotation verticale de l'apparence)
- Définissez la valeur du corps sur "3rd Person Follow"
- Définissez Ignorer la balise sur "Player" et sélectionnez également l'objet racine du lecteur et définissez sa balise sur "Player" (s'il y a des collisionneurs enfants dans la hiérarchie du lecteur, assurez-vous de modifier leurs balises sur "Player" également)
- Ajustez d'autres valeurs dans CinemachineVirtualCamera telles que la distance de la caméra, le côté de la caméra, le décalage d'épaule et l'amortissement jusqu'à ce que vous soyez satisfait du résultat.
- Définissez la valeur de visée de CameraParent sur "Do nothing"
La caméra devrait maintenant suivre le joueur:
Création de la cinématique de la chronologie
Ici, je vais montrer comment composer une cinématique en utilisant Unity's Timeline.
Timeline est un éditeur intégré qui permet aux développeurs de composer des cinématiques en animant la caméra, et également en utilisant des animations existantes (par exemple, la marche des personnages), ainsi que des événements et des signaux en les organisant de manière séquentielle.
Le package Cinemachine ajoute quelques options supplémentaires à un éditeur de chronologie, telles que la possibilité de basculer entre les caméras virtuelles.
Pour créer une cinématique, suivez les étapes ci-dessous:
- Créez un nouveau GameObject et appelez-le "TimelineManager"
- Ouvrez la fenêtre Chronologie en allant dans Fenêtre -> Séquençage -> Chronologie
- Sélectionnez l'objet "TimelineManager" et dans la fenêtre Chronologie, vous devriez voir une option pour créer un composant Director et une ressource Chronologie, cliquez dessus.
- Après avoir créé le composant Director et l'asset Timeline, vous devriez voir la fenêtre Timeline vide (assurez-vous que l'objet TimelineManager est sélectionné pour pouvoir le modifier).
- Nous pouvons maintenant commencer à ajouter des composants à la chronologie en cliquant avec le bouton droit sur la fenêtre.
Comme vous pouvez le voir, la fenêtre Chronologie a plusieurs options:
- Groupe de suivi - il s'agit d'un groupe qui peut contenir des actions de chronologie et est utile pour l'organisation.
- Suivi d'activation: définit l'objet qui ne doit être actif que pendant une période définie.
- Piste d'animation - cela jouera une animation spécifique pendant une période définie.
- Piste audio - cela jouera un son spécifique pendant une période définie.
- Control Track - une piste dont les clips contrôlent les éléments liés au temps sur un GameObject.
- Signal Track - cela permet d'effectuer une grande variété d'actions sur un objet de jeu spécifique à un moment précis (par exemple, activer le script de mouvement du joueur ou appeler une fonction spécifique lorsque la chronologie atteint une certaine image, etc.)
- Piste jouable - une piste dont les clips sont jouables personnalisés.
- Cinemachine Track - cela permet de fusionner plusieurs caméras virtuelles cinemachine.
Pour les besoins de ce didacticiel, j'utiliserai uniquement la piste d'animation et la piste de signal.
Installation
- Créez une autre caméra virtuelle et nommez-la "CutsceneCamera" et définissez sa valeur "Priority" sur un niveau au-dessus de "TPS Camera" (ex. 11)
- Faites un clic droit dans la vue du projet -> Créer -> Signal et nommez-le "DisablePlayer"
- Dupliquez le signal "DisablePlayer" et renommez-le en "EnablePlayer"
- Créez un nouveau GameObject dans la scène et nommez-le "SignalReceiver"
- Attachez le composant SignalReceiver à un objet "SignalReceiver"
- Cliquez sur "Add Reaction" 2 fois
- Attribuez "DisablePlayer" à une première réaction et "EnablePlayer" à une deuxième réaction
"DisablePlayer" activera la caméra de la cinématique, désactivera la caméra du joueur et le script de contrôle du joueur, et sera placé au début de la chronologie.
"EnablePlayer" désactivera la caméra de la cinématique, activera la caméra du joueur et le script de contrôle du joueur, et sera placé à la fin de la chronologie.
- Cliquez sur (+) pour ajouter un slot de réaction puis affectez l'objet dont le script ou le composant devait être activé/désactivé.
Astuce: Pour créer un signal opposé, vous pouvez simplement configurer les réactions pour "DisablePlayer" puis cliquer sur l'icône d'engrenage -> Dupliquer, changer le signal en "EnablePlayer" et inverser les cases à cocher.
- Sélectionnez l'objet "TimelineManager" puis dans la fenêtre Timeline ajoutez une nouvelle piste de signal en faisant un clic droit -> Signal Track puis affectez-lui l'objet "SignalReceiver".
- Faites glisser et déposez "DisablePlayer" élément de signal au début de la chronologie et "EnablePlayer" à l'image où vous souhaitez que la cinématique se termine:
Cela rendra le script du contrôleur du lecteur et la caméra désactivés au début, puis réactivés une fois que la chronologie atteint la fin.
Enfin, nous allons créer une animation de caméra simple.
- Faites un clic droit sur Timeline -> Animation Track puis attribuez "CutsceneCamera" (cela demandera d'ajouter un composant Animator à l'objet s'il n'y en a pas)
- Cliquez sur le bouton d'enregistrement
- Déplacez légèrement le "CutsceneCamera" afin que l'image clé soit appliquée, puis déplacez la poignée de l'image de la chronologie jusqu'à la fin, et enfin, déplacez la caméra vers une nouvelle position, puis cliquez sur Arrêter l'enregistrement.
Appuyons sur play et voyons le résultat:
La cinématique se joue au début du jeu.