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

Menú del administrador de paquetes de Unity

  • Cambiar paquetes a "Registro Unity"

Registro del administrador de paquetes de 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:

Sharp Coder Reproductor de video

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

Cinemachine crea una 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"

Valores del componente CinemachineVirtualCamera

La cámara ahora debería seguir al jugador:

Sharp Coder Reproductor de video

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

Menú de línea de tiempo de secuenciación de ventanas de Unity

  • 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.

Cinemachine crea el componente Director y un recurso de línea de tiempo

  • 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).

Ventana de línea de tiempo de Cinemachine

  • Ahora podemos comenzar a agregar componentes a la línea de tiempo haciendo clic derecho en la ventana.

Componentes de la línea de tiempo Crear

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"

Unity Crear señal de línea de tiempo

  • Duplique la señal "DisablePlayer" y cámbiele el nombre a "EnablePlayer"

Elementos de la señal de la línea de tiempo de Unity

  • 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

Señal de línea de tiempo de Unity Añadir 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.

Señal duplicada de unidad

Configuración de las reacciones de la señal de la línea de tiempo de Unity

  • 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:

Vista previa de la señal de la línea de tiempo de Unity

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

Registro de clip de animación de línea de tiempo de Unity

  • 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.

Línea de tiempo de la escena cinemática de Unity

Damos al play y vemos el resultado:

Sharp Coder Reproductor de video

La escena se reproduce al comienzo del juego.

Artículos sugeridos
Cómo pintar árboles en el terreno en Unity
Cómo importar animaciones a Unity
Tutorial de mando para Unity
Construyendo un Sistema de Menú Interactivo en Unity
Elegir el Skybox adecuado para su entorno en Unity
Estrategias para proteger los juegos de Unity de la piratería
Cómo hacer un juego inspirado en FNAF en Unity