Tutorial de Unity Cinemachine y Timeline
Cinemachine es un paquete para Unity que brinda a los desarrolladores un control de cámara profesional y mejora la capacidad de crear escenas cinemáticas.
Este tutorial cubrirá los siguientes temas:
- Instalación de la máquina de cine
- Configuración de cámara en tercera persona
- Creación de escenas de línea de tiempo
Instalación de la máquina de cine
Para instalar Cinemachine, siga los pasos a continuación:
- En Unity, vaya a Ventana -> Administrador de paquetes
- Cambiar paquetes a "Registro Unity"
- Seleccione "Cinemachine" de la lista y luego haga clic en "Install"
La Cinemachine ya está lista para usar.
Configuración de cámara en tercera persona
A continuación, mostraré cómo configurar una cámara en tercera persona usando la cámara virtual de Cinemachine.
Una cámara virtual es una versión liviana de una cámara Unity, que no se renderiza por sí sola, sino que simplemente se usa como punto de referencia para la cámara principal.
Como ejemplo para este tutorial, usaré un controlador en tercera persona, excepto sin configurar la colisión de la cámara y sin mover la cámara dentro de la jerarquía del jugador:
Como puede ver, el jugador se está moviendo pero la cámara no lo sigue.
Configurar una cámara en tercera persona usando Cinemachine es muy fácil:
- Vaya a GameObject -> Cinemachine -> Cámara virtual para crear una nueva cámara virtual
- Nombra la cámara virtual "TPS Camera"
- Seleccione Cámara TPS y en CinemachineVirtualCamera asigne la variable Seguir (en mi caso será el objeto "CameraParent", que se encuentra dentro de una jerarquía de reproductores y representa la rotación de mirada vertical)
- Establezca el valor del cuerpo en "3rd Person Follow"
- Establezca Ignorar etiqueta en "Player" y también seleccione el objeto raíz del reproductor y establezca su etiqueta en "Player" (si hay colisionadores secundarios en la jerarquía del reproductor, asegúrese de cambiar sus etiquetas a "Player" también)
- Modifique otros valores en CinemachineVirtualCamera, como la distancia de la cámara, el lado de la cámara, el desplazamiento del hombro y la amortiguación hasta que esté satisfecho con el resultado.
- Establezca el valor de objetivo de CameraParent en "Do nothing"
La cámara ahora debería seguir al jugador:
Creación de escenas de línea de tiempo
Aquí mostraré cómo componer una escena utilizando la línea de tiempo Unity's.
Timeline es un editor integrado que permite a los desarrolladores componer escenas mediante la animación de la cámara y también mediante el uso de animaciones existentes (p. ej., el paseo del personaje), además de eventos y señales organizándolos de manera secuencial.
El paquete Cinemachine agrega algunas opciones adicionales a un editor de línea de tiempo, como la capacidad de cambiar entre cámaras virtuales.
Para crear una escena, siga los pasos a continuación:
- Crea un nuevo GameObject y llámalo "TimelineManager"
- Abra la ventana Línea de tiempo yendo a Ventana -> Secuenciación -> Línea de tiempo
- Seleccione el objeto "TimelineManager" y en la ventana de la línea de tiempo, debería ver una opción para crear un componente de Director y un activo de la línea de tiempo, haga clic en él.
- Después de crear el componente Director y el activo de la línea de tiempo, debería ver la ventana de la línea de tiempo vacía (asegúrese de que el objeto TimelineManager esté seleccionado para poder editarlo).
- Ahora podemos comenzar a agregar componentes a la línea de tiempo haciendo clic derecho en la ventana.
Como puede ver, la ventana Línea de tiempo tiene varias opciones:
- Track Group: este es un grupo que puede contener acciones de la línea de tiempo y es útil para organizar.
- Pista de activación : define el objeto que debe estar activo solo durante un período de tiempo establecido.
- Pista de animación : reproducirá una animación específica durante un período de tiempo establecido.
- Pista de audio : reproducirá un audio específico durante un período de tiempo establecido.
- Control Track: una pista cuyos clips controlan elementos relacionados con el tiempo en un GameObject.
- Signal Track: esto permite realizar una amplia variedad de acciones en un objeto de juego específico en un momento específico (por ejemplo, activar el script de movimiento del jugador o llamar a una función específica cuando la línea de tiempo llega a un marco determinado, etc.)
- Pista reproducible: una pista cuyos clips son reproducibles personalizados.
- Cinemachine Track: esto permite combinar varias cámaras virtuales de cinemachine.
A los efectos de este tutorial, solo usaré Animation Track y Signal Track.
Configuración
- Cree otra cámara virtual y asígnele el nombre "CutsceneCamera" y establezca su valor "Priority" en un nivel por encima de "TPS Camera" (ej. 11)
- Haga clic con el botón derecho en la vista del proyecto -> Crear -> Señal y asígnele un nombre "DisablePlayer"
- Duplique la señal "DisablePlayer" y cámbiele el nombre a "EnablePlayer"
- Cree un nuevo GameObject en la escena y asígnele un nombre "SignalReceiver"
- Adjunte el componente SignalReceiver a un objeto "SignalReceiver"
- Haga clic en "Add Reaction" 2 veces
- Asigne "DisablePlayer" a una primera reacción y "EnablePlayer" a una segunda reacción
"DisablePlayer" activará la cámara de la escena, desactivará la cámara del jugador y el guión de control del jugador, y se colocará al comienzo de la línea de tiempo.
"EnablePlayer" desactivará la cámara de la escena, activará la cámara del jugador y el guión de control del jugador, y se colocará al final de la línea de tiempo.
- Haga clic en (+) para agregar una ranura de reacción y luego asigne el objeto cuyo script o componente necesitaba activarse o desactivarse.
Sugerencia: para crear una señal opuesta, puede configurar las reacciones para "DisablePlayer", luego hacer clic en el icono de engranaje -> Duplicar, cambiar la señal a "EnablePlayer" e invertir las casillas de verificación.
- Seleccione el objeto "TimelineManager" y luego en la ventana de línea de tiempo agregue una nueva pista de señal haciendo clic con el botón derecho -> Pista de señal y luego asígnele el objeto "SignalReceiver".
- Arrastre y suelte el elemento de señal "DisablePlayer" al comienzo de la línea de tiempo y "EnablePlayer" al cuadro en el que desea que finalice la escena:
Esto hará que la secuencia de comandos del controlador del jugador y la cámara se desactiven al principio y luego se reactiven una vez que la línea de tiempo llegue al final.
Por último, vamos a crear una animación de cámara simple.
- Haga clic derecho en Línea de tiempo -> Pista de animación y luego asigne "CutsceneCamera" (esto le pedirá que agregue el componente Animator al objeto si no hay ninguno)
- Haga clic en el botón de grabación
- Mueva el "CutsceneCamera" ligeramente, para que se aplique el fotograma clave, luego mueva el controlador del marco de la línea de tiempo hasta el final y, por último, mueva la cámara a una nueva posición y luego haga clic en detener la grabación.
Damos al play y vemos el resultado:
La escena se reproduce al comienzo del juego.