🎮 UnityDocs

Cómo hacer screen shake (temblor de cámara)

Receta para el temblor de cámara que da impacto a golpes y explosiones: la forma moderna con Cinemachine Impulse y una versión manual con corrutina para cámaras normales.

🍳 RecetaIntermedio✅ RevisadoUnity 6.0 LTSActualizado 2026-07-15
DificultadConceptual Código Matemáticas
Tiempo📖 Lectura 5 min · ⌨️ Práctica 20 min

El objetivo#

Que la cámara "tiemble" un instante al recibir un golpe, una explosión o un aterrizaje fuerte. Es de los efectos que más aportan al game feel (la sensación de impacto) por muy poco trabajo.

Opción A — Cinemachine Impulse (recomendada)#

Si usas Cinemachine, tiene un sistema hecho para esto: Impulse. Un objeto "emite" un impulso y las cámaras con un listener lo reciben y tiemblan. Desacoplado y potente.

  1. En tu CinemachineCamera, añade un CinemachineImpulseListener.
  2. En lo que provoca el temblor (el arma, la explosión), añade un CinemachineImpulseSource.
  3. Dispara el impulso por código:
C#
using UnityEngine;
using Unity.Cinemachine;   // Cinemachine 3.x (Unity 6)

[RequireComponent(typeof(CinemachineImpulseSource))]
public class Impacto : MonoBehaviour
{
    private CinemachineImpulseSource fuente;

    void Awake() => fuente = GetComponent<CinemachineImpulseSource>();

    public void Sacudir(float fuerza = 1f)
    {
        fuente.GenerateImpulse(fuerza);
    }
}
Namespace en Cinemachine 3 (Unity 6)

En Cinemachine 3 el namespace es Unity.Cinemachine (en versiones antiguas era Cinemachine). Si copias código viejo y no compila el using, es por esto. Los componentes también cambiaron de nombre respecto a Cinemachine 2.

Por qué Impulse es mejor que sacudir la cámara a mano

Con Impulse, cualquier cosa puede emitir un temblor y todas las cámaras reaccionan sin conocerse. Puedes definir el perfil del temblor (fuerte y corto para un disparo, largo y ondulante para un terremoto) como un asset reutilizable. Es el enfoque desacoplado que escala.

Opción B — Manual con corrutina#

Si usas una cámara normal (sin Cinemachine), una corrutina desplaza la cámara con valores aleatorios y la devuelve a su sitio:

C#
using System.Collections;
using UnityEngine;

public class ScreenShake : MonoBehaviour
{
    public IEnumerator Sacudir(float duracion, float magnitud)
    {
        Vector3 posOriginal = transform.localPosition;
        float t = 0f;

        while (t < duracion)
        {
            float x = Random.Range(-1f, 1f) * magnitud;
            float y = Random.Range(-1f, 1f) * magnitud;
            transform.localPosition = posOriginal + new Vector3(x, y, 0f);

            t += Time.deltaTime;
            yield return null;   // siguiente fotograma
        }

        transform.localPosition = posOriginal;   // volver a su sitio exacto
    }
}

Lánzalo con StartCoroutine(shake.Sacudir(0.2f, 0.3f));.

Guarda y restaura la posición original

El error clásico: la cámara no vuelve exactamente a su sitio y "deriva" con cada temblor. Guarda posOriginal antes de empezar y restáurala al final. Si la cámara sigue a un jugador, aplica el shake sobre una cámara/objeto hijo, no sobre la que hace el seguimiento, para no pelearte con el movimiento.

Dosis: menos es más#

No abuses del shake

Un temblor sutil en cada golpe se siente genial; uno enorme en todo hunde la experiencia (y marea). Reserva la intensidad alta para momentos grandes (explosiones, jefes) y usa temblores mínimos para el feedback constante. Combínalo con partículas, un destello y sonido para un impacto redondo.

Errores frecuentes#

  • La cámara no vuelve a su posición exacta y va derivando.
  • Aplicar el shake a la cámara que sigue al jugador y romper el seguimiento (usa un hijo).
  • Usar el namespace Cinemachine en vez de Unity.Cinemachine en Unity 6.
  • Pasarse de magnitud hasta marear.

Resumen#

Para el temblor de cámara: con Cinemachine, usa Impulse (un CinemachineImpulseSource que GenerateImpulse y un CinemachineImpulseListener en la cámara) — desacoplado y con perfiles reutilizables. Sin Cinemachine, una corrutina que desplaza la cámara con ruido y restaura la posición original. Dosifica la intensidad y acompáñalo de partículas y sonido para el máximo impacto.

Fuentes y para profundizar