Découvrez comment créer une Camera FPS facilement avec le package Cinemachine de Unity.
Le package Cinemachine peut être très intéressant pour disposer assez vite d'une camera "intelligente", sans trop devoir ajouter de lignes de codes.
Dans ce tutoriel nous allons créer une caméra de type FPS, qui se placera automatiquement, et sans une ligne de code, à la bonne position derrière le joueur.
Pensez à télécharger le projet Cinemachine depuis Github. Un souci pour le faire ? Suivez le guide pour utiliser un projet Unity . Allez encore plus loin avec un Atelier complet dédié à Github .
Installer le package Cinemachine de Unity.
Dans Unity c'est désormais très simple d'installer un package officiel, encore une fois grâce au PackageManager.
Installez donc le package Cinemachine.
Notez que dans le menu du haut de l'éditeur, Cinemachine apparaît maintenant, permettant d'ajouter des composants de type Cinemachine.
Ajouter une Virtual Camera
Créer une nouvelle scène. Ajouter dans la scène, le prefab que vous voulez que la caméra suive en mode FPS.
En passant par le menu du haut, ajouter un GameObject de type VirtualCamera.
Cinemachine => Create Virtual Camera
Notez que le composant CinemachineBrain a été automatiquement ajouté à la Camera présente dans la scène. Ce nouveau composant permet à Cinemachine de prendre le contrôle de la caméra de la scène.
A ce stade vous devez avoir un nouveau GameObject dans votre scène, qui porte le composant CinemachineVirtualCamera.
Paramétrer le composant VirtualCamera
Le nouveau Gameobject ajouté par Unity permet de gérer justement le suivi que l'on veut créer.
Cliquez sur le GameObject qui porte le composant CinemachineVirtualCamera afin de commencer le paramétrage .
Pour notre vue FPS, nous allons choisir "3rd PersonFollow" pour la valeur du paramètre Body.
Retrouvez d'autres types de paramétrages possibles du champ Body dans la documentation officielle de Unity.
Il faut ensuite indiquer au composant quel Transform suivre et notre VirtualCamera fera le reste. Affecter donc le FollowTarget du player au paramètre Follow du composant.
A partir de là, vous pouvez lancer la scène, et si vous déplacez votre player, la position de la caméra devrait se mettre à jour automatiquement.
Aller plus loin en scriptant la VirtualCamera
Pouvoir suivre un GameObject de la scène c'est super ! Mais pouvoir en changer en cours de route, pendant le déroulement du jeu, c'est encore mieux.
Dans la vidéo ci-dessous, vous trouverez un récapitulatif de ce qui a déjà été traité ci-dessus, mais aussi la démonstration du switch.
Voici le script, SwitchView.cs, qui est utilisé dans la vidéo.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Cinemachine;
public class SwitchView : MonoBehaviour
{
[SerializeField]private CinemachineVirtualCamera cineCam;
[SerializeField]private List<Transform> targets; //Liste des Transform que l'on veut suivre
public int currentInt;
// Start is called before the first frame update
void Start()
{
cineCam = GetComponent<CinemachineVirtualCamera>();
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown (KeyCode.Space)) { // appui sur la touche espace
Debug.Log ("switch target");
currentInt++;
if(currentInt >= targets.Count){
currentInt = 0;
}
cineCam.Follow = targets[currentInt]; // change le paramètre Follow pour un nouveau Transform pris dans la liste
}
}
}
Le concept est simple ! On dispose d'une liste de Transform que l'on désire suivre, et à chaque fois que l'on appuie sur la barre d'espace, ont met à jour le fameux paramètre Follow de la Virtual Camera.
Ainsi la caméra ira se positionner automatiquement derrière le nouveau personnage à suivre. Super, non ?