Camera Transitions - Unity Asset Store - Nephasto

Una gran colección de transiciones cinematográficas, en tiempo real, entre cámaras en una escena.

🕹️ Demo  🛒 Store

Editor

Lo primero que debes hacer es crear una instancia de “TransitionManager”, el objeto a cargo de manejar las transiciones. Crea un GameObject vacío y agrega el componente “TransitionManager”. Solo debe haber un “TransitionManager” a la vez.

 

Desde este componente podrás configurar el funcionamiento general de todas las transiciones. La primera opción es ‘Progress’ (1), y con ella podrás cambiar como se actualizan las transiciones: automáticamente (por defecto) y de forma manual. Si eliges la última opción, tendrás que actualizar tu mismo el progreso usando ‘Transition.Progress’.

Si desactivas ‘Use scaled time’ (2), el tiempo de las transiciones no se verá afectado por Time.timeScale.

Por lo general, todas las cámaras tienen su propio AudioListener. Durante las transiciones, hay dos cámaras activadas, lo que significa que tendrás dos AudioListeners activos. Para evitar esto activa ‘Handle AudioListener’ (3).

Para evitar que se destruya el objeto donde esté ‘Transition Manager’ al descargar la escena, activa ‘Dont destroy on Load’ (4).

La siguiente opciones afectan a la calidad de las transiciones y a su rendimiento. Cada vez que se produce una transición, se crea una RenderTexture, si quieres encargarte tu de esto selecciona ‘Manual’ en ‘Mode’ (5).

Normalmente se actualizan las cámaras cada nuevo frame, si quieres que solo se actualize el primer frame de la transición selecciona ‘First frame only’ en ‘Update’ (6). Tambien puedes disminir el tamaño del render, aumentado el rendimiento a costa de empeorar la calidad, en ‘Size’ (7). Por último, en ‘doc’ (8) podrás acceder a la documentación online.

Código

Todo el código está dentro del namespace “Nephasto.CameraTransitionsAsset”, por lo que primero debe incluir el namespace:

1
 using Nephasto.CameraTransitionsAsset;

 

Entonces podrás acceder a “TransitionManager” a través de su singleton “TransitionManager.Instance”.

Ahora, si “cameraA” y “cameraB” son dos cámaras en tu escena, puedes hacer tu primera transición de esta manera:

1
 TransitionFadeToGrayscale.Start(cameraA, cameraB, 1.0f);

 

Esto ejecutará un fundido gris entre “cameraA” y “cameraB” que durará un segundo.

En la carpeta “Nephasto/CameraTransitions/Runtime/Transitions” tienes todas las transiciones disponibles. Todas tienen un método “Start” estático para ejecutar su transición. Consulta los comentarios en el código para conocer los diferentes parámetros. También te interesa consultar los comentarios de la clase ‘Nephasto/CameraTransitions/Runtime/Transition.cs‘ ya que todas las transiciones heredan de ella.

Algunos puntos a considerar:

  1. Las transiciones son siempre entre cámaras de escenas cargadas. ‘Camera Transitions‘ no carga nuevas escenas.
  2. Al final de la transición se desactivará el GameObject de la cámara inicial, por lo que es mejor que solo contenga los componentes relacionados con la cámara.
  3. Las cámaras de origen y destino deben ser diferentes.

Es posible que desees que sucedan cosas en tu juego cuando comience la transición y cuando termine. Para hacer esto, solo tienes que usar los eventos ‘StartEvent‘, ‘ProgressEvent’ y ‘EndEvent‘ de ‘Transition Manager‘.

Transiciones

A continuación, puedes encontrar una lista de todas las transiciones disponibles y cómo ejecutarlas.

Cross Zoom

 

Zoom y desenfoque radial. Los parámetros a personalizar son:

  1. Strength (float, default 0.4): fuerza del efecto [0 – 1].
  2. Quality (float, default 20): calidad de la transición. [0 – 40].
1
 TransitionCrossZoom.Start(cameraA, cameraB, 1.0f, 0.4f, 20.0f);

 

Cube

 

Moderna y elegante, la elección de Steve Jobs. Los parámetros a personalizar son:

  1. Perspective (float, default 0.7): agudeza del ángulo de la perspectiva [0 – 1].
  2. Zoom (float, default 0.3): cuanto se aleja [0 – 100].
  3. Reflection (float, default 0.4): fuerza de la reflexión [0 – 1].
  4. Elevantion (float, default 3.0): cuanto se eleva del suelo [0 – 100].
1
 TransitionCube.Start(cameraA, cameraB, 1.0f, 0.5f, 0.4f, 0.3f, 2.0f);

 

Doom

 

¡Doom ha vuelo! y también su efecto de transición. Los parámetros a personalizar son:

  1. Bar width (int, default 10): ancho de las barras [0 – …].
  2. Amplitude (float, default 2.0): diferencia de altura entre barras [0.0 – 25.0].
  3. Noise (float, default 0.1): ruido que afecta a la altura [0.0 – 1.0].
  4. Frequency (float, default 1.0): frecuencia de la onda [0.0 – 100.0].
1
 TransitionDoom.Start(cameraA, cameraB, 1.0f, 25, 2.0f, 0.25f, 2.0f);

 

Fade to color

 

El clásico fundido a un color. Los parámetros a personalizar son:

  1. Strength (float, default 0.3): si es 0 color tiene poca influencia en el efecto, si es 1 el color influye y dura más [0 – 1].
  2. Color (Color, default Color.black): El color.
1
 TransitionFadeToColor.Start(cameraA, cameraB, 1.0f, 0.5f, Color.white);

 

Fade to grayscale

 

Igual que el anterior pero a grises, muy hipster. Los parámetros a personalizar son:

  1. Strength (float, default 0.3): si es 0, la imagen cambia directamente a escala de grises, si es 1 la fase de transición de escala de grises es mas duradera [0 – 1].
1
 TransitionFadeToGrayscale.Start(cameraA, cameraB, 1.0f, 0.5f);

 

Flash

 

Una transición con flash y colores quemados. Los parámetros a personalizar son:

  1. Strength (float, default 0.3): la fuerza del flash [0 – 1].
  2. Intensity (float, default 3.0): la intensidad del flash [0 – 5].
  3. Zoom (float, default 0.5): si 0, no hay efecto de zoom, si es 1 el efecto de zoom es intenso [0 – 1].
  4. Velocity (float, default 3.0): velocidad del efecto [0.1 – 10].
  5. Color (Color, default (1.0, 0.8, 0.3)): el color del flash.
1
 TransitionFlash.Start(cameraA, cameraB, 1.0f, 0.4f, 4.0f, 0.6f, 4.0f, Color.red);

 

Flip

 

Cámaras comprimidas sin piedad. Los parámetros a personalizar son:

  1. Mode (Horizontal / Vertical).
1
 TransitionFlip.Start(cameraA, cameraB, 1.0f, TransitionAxis.Horizontal);

 

Fold

 

Como si dobláras la cámara anterior. Los parámetros a personalizar son:

  1. Mode (Horizontal / Vertical).
1
 TransitionFold.Start(cameraA, cameraB, 1.0f, TransitionAxis.Horizontal);

 

Gate

 

Llamando a las puertas. Los parámetros a personalizar son:

  1. Perspective (float, default 0.4): perspectiva [0.0 – 1.0].
  2. Depth (float, default 3.0): profundidad [0.0 – 100.0].
  3. Reflection (float, default 0.4): reflexión [0.0 – 1.0].
1
 TransitionGate.Start(cameraA, cameraB, 1.0f, 0.3f, 5.0f, 0.3f);

 

Glitch

 

Desplazamientos de los canales RGB, sucede cuando cambian algo en Matrix. Los parámetros a personalizar son:

  1. Strength (float, default 0.4): fuerza de los desplazamientos [0 – 10].
1
 TransitionGlitch.Start(cameraA, cameraB, 1.0f, 1.0f);

 

Gradient

Esta transición se basa en el uso de gradientes. Un gradiente no es más que una textura en escala de grises. La transición pasará de negro a blanco.

Por ejemplo, si usamos un gradiente como este:

 

La transición resultante será:

 

Los parámetros a personalizar son:

  1. Gradient (Texture): textura con el gradiente.
  2. Border size (float, default 0). Tamaño del borde.
  3. Border color (Color). Color del borde.
1
 TransitionGradient.Start(cameraA, cameraB, 1.0f, gradient, 0.1f, Color.cyan);

 

También incluyo un ‘Banco de gradientes‘, un asset en el que puede agregar referencias a los gradientes que deseas usar y así no tendrás que incluirlos a la carpeta Resources. Para crear uno, solo tienes que hacer clic con el botón derecho en la ventana “Project” y luego en el menú “Create > Nephasto > Camera Transitions > Gradient Bank”.

En la carpeta “Nephasto/CameraTransitions/Gradients/Textures” puedes encontrar más de 250 texturas de gradiente. Puede eliminar esta carpeta si no la vas a utilizar. Todos están referenciados en “Nephasto/CameraTransitions/Gradiends/AllGradients.asset”.

1
 TransitionGradient.Start(cameraA, cameraB, 1.0f, gradientBank.textures[Random.Range(0, gradientBank.textures.Count)]);

 

Linear blur

 

Transición con efecto de desenfoque lineal. Los parámetros a personalizar son:

  1. Intensity (float, default 0.1): intensidad del suavizado [0 – 1].
  2. Passes (int, default 8): calidad del suavizado [1 – 8].
1
 TransitionLinearBlur.Start(cameraA, cameraB, 1.0f, 0.5f, 6);

 

Mosaic

 

Efecto de mosaico aleatorio. Los parámetros a personalizar son:

  1. Steps (Vector2, default (1, 1)): celda destino [-10 - 10]. Evita saltar a la misma celda (0 - 0).
  2. Rotate (bool, default false): ¿rotar celdas al azar? [true – false].
1
 TransitionMosaic.Start(cameraA, cameraB, 1.0f, new Vector2(2.0, 3.0), true);

 

Page curl

 

Efecto de cambio de página. Los parámetros a personalizar son:

  1. Angle (float, default 45): angulo [0 – 180].
  2. Radius (float, default 0.1): radio [0 – 1].
  3. Front shadow (bool, default true): sombras [true – false].
  4. Back transparency (float, default 0.25): transparencia [0 – 1].
  5. Back shadow (bool, default true): sombra trasera [true – false].
  6. Inner shadow (bool, default true): sombra interior [true – false].
1
 TransitionPageCurl.Start(cameraA, cameraB, 1.0f, 60.0f, 0.4f, true, 0.25f, true, true);

 

Pixelate

 

Efecto retro pixelado. Los parámetros a personalizar son:

  1. Size (float, default 50.0): tamaño de los pixels [0 – …].
1
 TransitionPixelate.Start(cameraA, cameraB, 1.0f, 75.0f);

 

Radial

 

Bonito efecto de cortina radial. Los parámetros a personalizar son:

  1. Clockwise (bool, default true): ¿giro en agujas del reloj?
1
 TransitionRadial.Start(cameraA, cameraB, 1.0f, false);

 

Random grid

 

Corta la pantalla con rectángulos aleatorios. Los parámetros a personalizar son:

  1. Rows (int, default 10): filas [0 – …].
  2. Columns (int, default 10): columnas [0 – …].
  3. Smoothness (float, default 0.5): suavidad de la transición [0 – 1].
1
 TransitionRandomGrid.Start(cameraA, cameraB, 1.0f, 20, 5, 0.25f);

 

Schwifty

 

Es hora de ponerse schwifty. Los parámetros a personalizar son:

  1. Intensity (float, default 0.3): intensidad [0 – 1].
  2. Amplitude (float, default 10): amplitud [0 – …].
1
 TransitionSchwifty.Start(cameraA, cameraB, 1.0f, 0.4f, 12);

 

Simple

 

Porque a veces menos es más. Esta transición es un fade simple, tan simple que no tiene parámetros adicionales.

1
 TransitionSimple(cameraA, cameraB, 1.0f);

 

Smooth circle

 

Efecto muy de dibujos animados. Los parámetros a personalizar son:

  1. Smoothness (float, default 0.3): si es 0 el borde del círculo no es liso, si es 1 es muy liso. [0 – 1].
  2. Invert (bool, default false): ¿abrir o cerrar?
1
 TransitionSmoothCircle.Start(cameraA, cameraB, 1.0f, 0.1f, true);

 

Smooth line

 

Una bonita transición cinematográfica. Los parámetros a personalizar son:

  1. Angle (float, default 45.0): ángulo de la línea [0 – 360].
  2. Smoothness (float, default 0.5): si es 0 el color tiene poca influencia en el efecto, si es 1 el color influye y dura más. [0 – 1].
1
 TransitionSmoothLine.Start(cameraA, cameraB, 1.0f, 90.0f, 0.1f);

 

Swap

 

Elegante transición entre cámaras. Los parámetros a personalizar son:

  1. Perspective (float, default 0.2): perspectiva [0.0 – 1.0].
  2. Depth (float, default 3.0): profundidad [0.0 – 100.0].
  3. Reflection (float, default 0.4): reflexión [0.0 – 1.0].
1
 TransitionSwap.Start(cameraA, cameraB, 1.0f, 0.3f, 5.0f, 0.3f);

 

Valentine

 

Nada dice más “Te quiero” que un corazón atravesando en la pantalla. Los parámetros a personalizar son:

  1. Border width (float, default 25): ancho del borde [0 – 100].
  2. Color (Color, default Color.red): color del borde.
1
 TransitionValentine.Start(cameraA, cameraB, 1.0f, 50.0f, Color.black);

 

Vortex

 

Hace un teletransporte con estilo. Los parámetros a personalizar son:

  1. Distortion (float, default 0.3): distorsión [0 – 1].
1
 TransitionVortex.Start(cameraA, cameraB, 1.0f, 0.5f);

 

Warp wave

 

Ondas gravitacionales a través de tu escena. Los parámetros a personalizar son:

  1. Mode (Horizontal / Vertical, default Vertical).
  2. Curvature (float, default 0.5): fuerza de la onda [0.0 – 5.0].
1
 TransitionWarpWave.Start(cameraA, cameraB, 1.0f, TransitionAxis.Vertical, 1.0f);

 

Wipe

 

La nueva cámara empuja a la vieja. Los parámetros a personalizar son:

  1. Mode (Horizontal / Vertical, default Horizontal).
1
 TransitionWipe.Start(cameraA, cameraB, 1.0f, TransitionAxis.Vertical);

 

Cualquier pregunta o sugerencia que tengas estaré encantado de responderla en

hello@nephasto.com