En esta parte vamos a utilizar un método alternativo, en vez de usar un clon de nuestro personaje podemos utilizar una segunda cámara ligada al cuerpo del personaje. Esto tiene ventajas y desventajas, y ahora vamos a verlas con más detalle.
Transición con pantalla dividida
Transición con máscara cilíndrica
Máscara del personaje
Lo primero que vamos a hacer es modificar nuestro personaje para eliminar todo lo relacionado con la replicación de movimiento del clon. Podemos eliminar también la variable AI Controller, este personaje nunca va a perder la posesión del jugador.
Ahora podemos añadir un segundo componente Scene Capture al mismo brazo que el otro Scene Capture que ya tenemos. Ya que estamos podemos desplazar este segundo Scene Capture para que quede dentro de la habitación destino. El vector de translación utilizado para desplazar esta segunda cámara es el que podemos utilizar para realizar el teletransporte del personaje a la habitación destino al finalizar el efecto de transición.
Esta cámara necesita su propio Render Target 2D. Sus ajustes serán los mismos que el que ya tenemos para el otro Scene Capture.
La inicialización de los componentes del mapa ahora es mucho más simple con un solo personaje.
Y el material acepta ambos render target del mismo personaje, uno de cada Scene Capture.
Ahora podemos apreciar el primero problema en los límites de la transición. Puesto que no tenemos un personaje en la posición de destino, cuando la transición alcanza ese punto vemos una zona vacía en la posición del personaje.
La primera opción para para arreglar este problema es generar una máscara con la forma del personaje. La opción más rápida es asignar un valor Custom Stencil a la malla del cuerpo del personaje y modificar el material para incluir esta forma a la composición final.
Hemos activado la opción de Render Custom Depth y establecido un valor de 38 (por ejemplo) en el Custom Depth Stencil.
Para ser capaces de ver y utilizar este valor en un material tenemos que activar el buffer cambiando una opción del editor en la sección Rendering. Custom Depth-Stencil Pass la ponemos a Enable with Stencil.
Este buffer se puede ver en el viewport del editor cambiando el View Mode a Buffer Visualization > Custom Stencil, puede resultar útil para depuración.
En nuestro material tenemos que añadir un nodo Scene Texture y utilizando el desplegable de la pestaña de Details seleccionar Custom Stencil
Para hacer la máscara se puede utilizar una clausula condición, devolverá un valor de 1 cuando el custom stencil sea 38 y 0 en cualquier otro caso. Podemos extraer el valor de cualquiera de las componentes del Color de Custom Stencil, todas las componente de este color tienen el mismo valor.
Esta máscara tiene que añadirse a la máscara que ya estábamos generando con el cilindro de transición.
Esta a sido la última modificación necesaria para esta aproximación para no utilizar un personaje clonado. Y ahora ya podemos ver el cuerpo completo del personaje durante todo el tiempo de la transición.
Al final de la transición el personaje puede ser teletransportado a la habitación destino. Pero como podemos ver, ahora tenemos un nuevo problema con la sombra proyectada por el personaje, durante la transición, en la sección de destino.
Estamos consiguiendo la máscara del cuerpo del personaje utilizando el buffer Custom Stencil, pero esta máscara no puede incluir su sombra. No podemos extraer una sombra independiente de la superficie en la que está proyectada. Este problema también lo encontramos con los reflejos, en general todos los efectos que tienen que ser proyectados sobre una superficie.
Durante la transición tenemos el personaje físicamente en la habitación origen por lo que sólo tenemos la sombra proyectada en esta habitación. Al no tener un personaje en la habitación de destino no podemos tener ninguna sombra proyectada en su superficie.
En conclusión, utilizando solo dos Scene Capture podemos llegar a obtener un efecto de transición bastante decente bajo ciertas condiciones, pero utilizando un clon se pueden conseguir un mejor efecto a costa de utilizar unos pocos recursos más para duplicar el personaje y sus movimientos, efectos visuales…
Tutorial files
Te puede interesar:
Ayudanos con este blog!
El último año he estado dedicando cada vez más tiempo a la creación de tutoriales, en su mayoria sobre desarrollo de videojuegos. Si crees que estos posts te han ayudado de alguna manera o incluso inspirado, por favor considera ayudarnos a mantener este blog con alguna de estas opciones. Gracias por hacerlo posible!