Master Gollum

Ren'py Tutorial (III): Transiciones

Publicado hace 86 días

Ya han pasado casi dos meses desde la segunda entrega del segundo Tutorial de Ren'py. Como me reclamáis que lo continúe y la verdad es que tienen relativamente bastantes visitas estas entradas, prosigo la serie. Sé que me habéis pedido que os explique como hacer una galería de fotos, pero como es algo que todavía no he investigado, me permitiréis que me centre en las transiciones. Es un elemento que puede dar mucho de juego y ayudar a que nuestro proyecto luzca mejor.

Una transición es un efecto visual que se ejecuta sobre una imagen. Nos permitirán dar un poco más de dinamismo a nuestra creación y que no sea solo un conjunto de imágenes estáticas con texto que van pasando por la pantalla. Las transiciones son muy simples de usar y se lanzan por medio de la declaración with [transición].

Aunque las transiciones son genéricas y sirven para cualquier tipo de imagen, hay algunas que se adecuan más para gestionar el cambio entre una escena y otra, de ahí que se llamen transiciones, y otras que nos serán más útiles para crear efectos sobre las imágenes de los personajes.

Transiciones de escena

Empezamos viendo la lista de transiciones predefinidas que creo que son más útiles. Como son transiciones de escena las usaremos con el comando scene [imagen] with [transición].

Este tipo de transiciones podemos usarlas directamente sin necesidad de declararlas previamente. Se puede ver la lista completa en la documentación oficial: Transitions: Pre-Defined Transitions.

Demostración de varias transiciones entre las imágenes de dos escenas.

Cuándo usar transiciones

Hay transiciones que a penas son perceptibles y no molestan. Por ejemplo fade o dissolve, otras en cambio son muy vistosas y abusar de ellas puede llegar incluso a ser molesto. En mi opinión una transición vistosa debería aportar información. Tiene que ser usada con una finalidad concreta, por ejemplo para marcar un salto temporal o un cambio de escenario importante. Tampoco habría que usar demasiadas transiciones diferentes, ya que puede resultar caótico. Por ejemplo, podemos usar una para el cambio de día, otra para un cambio grande de ubicación y una tercera para representar el uso de un sistema de teleportación.

Transiciones entre imágenes

Las transiciones también puede utilizarse en imágenes de personajes, no solo para las escenas. Así que en este caso acompañarán a los comandos show y hide. Pueden usarse tanto para crear un efecto de entrada, como para cambiar la posición en la pantalla o para hacer que abandone la escena.

Por supuesto podemos usar también cualquiera de las transiciones de escena también para las imágenes de los personajes u otros elementos. Por ejemplo, vpunch podría usarse para mostrar un sobresalto de ese personaje.

Ejemplo de transición moveinright y moveoutright y debajo el código del ejemplo.

scene street
show araya at right with moveinright
pause 2
hide araya with moveoutright

Transiciones personalizadas

Imaginemos que queremos que el fade sea más lento, para simbolizar como el personaje pierde el conocimiento y se produce un fundido en negro o quizás incluso queramos que la pantalla se funda en rojo cuando el personaje muera y mostrar luego el cadáver. Ren'py proporciona clases con las que poder hacer esto. Todas las transiciones anteriores no son más que instancias de estas clases con unos parámetros prefijados.

Por ejemplo, la clase Fade acepta cuatro parámetros: tiempo de salida de la imagen actual, tiempo de permanencia en el color, tiempo de entrada de la nueva imagen, color.

scene hospital with Fade(1.5, 2, 0.5, color="#000")

Un fundido de 1.5 segundos hasta la pantalla negra, la aguantamos 2 segundos más y luego damos un paso rápido de medio segundo a la nueva escena.

Si lo que queremos es causar un flash en la pantalla sin que desaparezcan los personajes de la escena, podemos usar el show sobre uno de ellos. Por ejemplo el código siguiente causa un flash rojo que podría representar un golpe al personaje.

show warrior with Fade(.1, 0, 0, color="#FF0000")

Otra idea que nos da el mismo tutorial es el flash de una cámara con un Fade(0.1, 0.0, 0.5, color="#fff"). Las posibilidades están limitadas por nuestra imaginación. Hay muchos más tipos de clases que podemos usar y crear efectos de lo más diverso. Me remito a la documentación si queréis verlas todas: Transition Classes.

Imaginemos que esta transición que hemos creado queremos utilizarla a menudo. Puede incluso que mientras probamos la novela estemos ajustando los tiempos, ahora 2 segundos, ahora 4 segundos, buscando el punto que nos convenza. Para evitar tener que estar cambiando en varios puntos de nuestro script podemos definirnos una variable y usarla más adelante. Esto también nos puede resultar útil para acordarnos que hace esa transición cuando volvamos a leer el código.

define fainting = Fade(1.5, 2, 0.5, color="#000")
[...]
scene hospital with fainting

Hay cosas más avanzadas que pueden hacerse, como combinar transiciones entre sí o aplicarlas a un layer concreto. Si queréis que profundicemos más decídmelo. Intentaré publicar tutoriales con más frecuencia, pero de momento esto es todo por hoy. ¡Nos vemos en la próxima entrega!

[Anterior: Menús]

Copyright

Las imágenes pertenecen al anime Assault Lily: Bouquet y pertenecen a Azone International y el Studio Shaft. Están usadas con fines educativos sin ningún ánimo de lucro.