Curso de Cinemachine en Unity: Domina las Cámaras 3D Paso a Paso✅
Curso de Cinemachine en Unity:
Domina las Cámaras 3D Paso a Paso
¿Cansado de pelear con scripts de cámaras complejos que atraviesan paredes? 🎬 Descubre el superpoder de Cinemachine: el sistema cinematográfico profesional de Unity para crear seguimiento suave, cambios de plano épicos, temblores de explosión y movimientos de cámara nivel AAA sin sudar.
Sin Código Obligatorio
Configuración 90% mediante Inspector
Transiciones Suaves
Blends automáticos inteligente
Impulse Shake
Impactos y explosiones realistas
Script C# Listo
Sistema de Priority Switcher
Instalación y Cinemachine Brain
En las versiones modernas de Unity (Unity 6 y superiores), Cinemachine 3.x se instala como un paquete nativo optimizado. ¡No necesitas instalar paquetes raros de terceros!
Pasos para instalar Cinemachine:
- Abre tu proyecto en Unity.
- Ve al menú superior: Window > Package Manager.
- Selecciona Packages: Unity Registry.
- Busca "Cinemachine" y haz clic en Install.
🧠 ¿Qué es el Cinemachine Brain?
Es el "cerebro" que se añade a tu Main Camera habitual. El Brain se encarga de escuchar a todas las cámaras virtuales de la escena y decidir cuál debe renderizarse, controlando la velocidad de transición (Smooth Blend) entre ellas.
Virtual Cameras (VCams): Las Protagonistas
Una Virtual Camera (CinemachineCamera en 3.x) no renderiza píxeles por sí misma. Piensa en ella como un camarógrafo invisible colocado en tu escenario 3D. Contiene dos campos principales indispensables:
1. Campo "Follow" (Seguimiento)
Define qué objeto o personaje seguirá la cámara en el espacio 3D. La cámara se desplazará para mantener la distancia programada con respecto a este objetivo.
Follow = Transform del Jugador
2. Campo "Look At" (Orientación)
Define hacia dónde debe rotar o apuntar la lente de la cámara. Ideal para mantener a un enemigo o punto de interés siempre centrado en el encuadre.
Look At = Transform del Enemigo / Target
Configuraciones de Posición (Body) y Rotación (Aim)
Dependiendo del tipo de juego que estés creando (3ª persona, plataformas, carreras, sigilo), Cinemachine ofrece algoritmos integrados:
Permite orbitar la cámara alrededor del jugador usando el ratón o joystick. La cámara clásica para juegos como Zelda o Genshin Impact.
Ideal: Acción 3D / RPGObliga a la cámara a moverse exclusivamente a lo largo de un riel o vía 3D (Smooth Path) predefinida, ideal para juegos de desplazamiento lateral o cinemáticas.
Ideal: Platformer 2.5D / CarrerasDiseñado para cámaras 2D y 2.5D. Mantiene al jugador dentro de una zona de encuadre cómoda (Dead Zone y Soft Zone) sin giros bruscos.
Ideal: Juegos 2D / Vista CenitalCinemachine Impulse: Temblores y Shakes de Impacto
¡Dale jugo y feedback a tus golpes!
Olvídate de mover la cámara manualmente mediante corrutinas. Con Cinemachine Impulse, cualquier objeto (una granada, un golpe o un salto) puede emitir un impulso de vibración en el espacio 3D.
Cinemachine Impulse Listener a tu Cámara Virtual.
Cinemachine Impulse Source al objeto que explota o golpea.
public class Explosion : MonoBehaviour {
private CinemachineImpulseSource impulse;
void Explotar() {
impulse.GenerateImpulse();
}
}
Script C#: CinemachineCameraSwitcher.cs
Este script optimizado y limpio te permite alternar dinámicamente entre múltiples cámaras virtuales (por ejemplo: vista normal, vista de apuntado con mirilla, o vista de mapa cenital) modificando sus prioridades en tiempo real. Compatibilidad nativa con namespaces modernos de Cinemachine.
using UnityEngine;
using Unity.Cinemachine;
/// <summary>
/// Permite alternar entre diferentes Cámaras Virtuales de Cinemachine
/// cambiando las prioridades (Priority) en tiempo real.
/// </summary>
public class CinemachineCameraSwitcher : MonoBehaviour
{
[Header("Cámaras Virtuales de la Escena")]
[SerializeField] private CinemachineCamera mainPlayerCamera;
[SerializeField] private CinemachineCamera aimCamera;
[SerializeField] private CinemachineCamera topDownCamera;
[Header("Valores de Prioridad")]
[SerializeField] private int activePriority = 20;
[SerializeField] private int inactivePriority = 10;
private void Start()
{
// Establecer la cámara de jugador como activa por defecto al iniciar
SwitchToCamera(mainPlayerCamera);
}
private void Update()
{
// Ejemplo: Mantener presionado Click Derecho para Apuntar
if (Input.GetMouseButtonDown(1))
{
SwitchToCamera(aimCamera);
}
else if (Input.GetMouseButtonUp(1))
{
SwitchToCamera(mainPlayerCamera);
}
// Ejemplo: Presionar M para vista de Mapa / Cenital
if (Input.GetKeyDown(KeyCode.M))
{
SwitchToCamera(topDownCamera);
}
}
/// <summary>
/// Asigna prioridad máxima a la cámara seleccionada y baja la prioridad al resto.
/// </summary>
public void SwitchToCamera(CinemachineCamera targetCamera)
{
if (targetCamera == null) return;
// Desactivar prioridades
if (mainPlayerCamera != null) mainPlayerCamera.Priority = inactivePriority;
if (aimCamera != null) aimCamera.Priority = inactivePriority;
if (topDownCamera != null) topDownCamera.Priority = inactivePriority;
// Activar la cámara deseada
targetCamera.Priority = activePriority;
}
}
Enlaces Útiles para Profundizar en Cinemachine
Manual Oficial Cinemachine 3.x
Documentación oficial de Unity con el desglose detallado de todos los componentes y APIs C#.
Unity Learn: Camera Systems
Cursos oficiales en vídeo con proyectos prácticos descargables para practicar encuadres.
Videojuegos Unity Jr. Blog
Visita el blog de Juan Rafael para más tutoriales paso a paso, recursos y código fuente.
Deja un comentario