Tutorial: Efecto “ghosting” en GameMaker: Studio

By | 14 agosto, 2020
Efecto “ghosting” en GameMaker: Studio 1.4

El efecto ghosting es cuando un objeto deja rastro al moverse por la pantalla. Dicho de otra manera, es un efecto donde el objeto crea “copias” de sí mismo conforme cambia su posición, las cuales se van desvaneciendo poco a poco hasta desaparecer completamente.

Agregando el objeto que servirá para el efecto

Dado que el efecto ghosting implica crear copias del objeto que tendrá el efecto, lo primero que tenemos que hacer es agregar un objeto nuevo que servirá como si fueran las copias de ese objeto. Lo podemos llamar “obj_ghosting”.

Luego tenemos que agregar el evento Create para ajustar ciertas variables en el objeto del efecto.

// Reemplaza "obj_player" con el objeto que quieres que tenga el efecto ghosting.
ghosting_player_obj = obj_player;

sprite_xoffset = ghosting_player_obj.sprite_xoffset;
sprite_yoffset = ghosting_player_obj.sprite_yoffset;

x = ghosting_player_obj.x;
y = ghosting_player_obj.y;

Como dice en el comentario, debes reemplazar “obj_player” por el nombre del objeto que quieres que tenga este efecto.

Luego tenemos que agregar el evento Step en el mismo objeto, y es aquí en donde haremos que la copia del objeto tenga el mismo sprite y la misma subimagen del objeto principal. Primero se ajusta la variable “sprite_index” para cambiar el sprite que usará el efecto:

sprite_index = ghosting_player_obj.sprite_index;

Luego ajustamos la subimagen por medio de la variable “image_index” para que el efecto siempre salga con la misma imagen del sprite:

image_index = ghosting_player_obj.image_index;

Para que el efecto no tenga animación y aparezca como si fuera una imagen congelada del objeto principal, tenemos que ajustar el “image_speed” a 0:

image_speed = 0;

Para que el efecto vaya desapareciendo gradualmente, debemos manipular el valor “alfa” del objeto por medio de la variable image_alpha que controla la transparencia. En GameMaker, un valor alfa de “1” indica que el objeto es completamente visible (sin transparencia), mientras que un valor de “0” hará que el objeto sea invisible. Por lo tanto, un valor de 0.5 hará que el objeto sea parcialmente visible.

Dado que esto lo estamos haciendo en el evento Step, debemos reducirle una cantidad baja a su valor actual, por ejemplo, 0.05 para que el efecto pueda verse por más tiempo. Puedes “jugar” con este valor hasta que se ajuste a tus necesidades.

image_alpha -= 0.05;

Es necesario destruir el efecto al momento de que su valor alfa sea exactamente 0 o menor. Primero ponemos una condición “if” y enseguida llamamos la función “instance_destroy” para destruir el objeto:

if (image_alpha <= 0) {
   instance_destroy();
}

Por último, tenemos que ajustar el valor “depth” del objeto para que siempre aparezca detrás del objeto principal. Solo tenemos que cambiar el depth a “1”:

Depth (profundidad) del obj_ghosting

Con esto habremos terminado nuestro objeto que se encargará de crear el efecto ghosting. Ahora tenemos que hacer unos cambios al objeto principal, es decir, al objeto que hará uso de este efecto.

Modificando el objeto principal

Para que el objeto haga el efecto ghosting tenemos que darle un intervalo por medio de una alarma (alarm). Dicha alarma es la que se encargará de crear las copias según el intervalo que le hayamos puesto. Para este ejemplo, podemos ajustar el intervalo de la alarma a 2:

alarm[0] = 2;

Esto hará que la alarma 0 se active tras haber pasado 2 steps (cuadros) en el juego.

Después agregamos el evento de Alarm 0, y aquí es en donde crearemos una instancia del obj_ghosting para que el efecto se pueda ver en el objeto, dando como argumento las mismas variables x,y del objeto principal:

instance_create(x, y, obj_ghosting);

En el mismo evento, tenemos que volver a ajustar la alarma a 2 pasos para que el objeto siga creando copias de sí mismo conforme cambie su posición:

alarm[0] = 2;

Y con esto hemos terminado el tutorial para crear el efecto ghosting en GameMaker: Studio. Si probamos el juego veremos que el objeto creará varias instancias de sí mismo, las cuales irán desapareciendo poco a poco para crear el efecto justo como se muestra en la primera imagen de este tutorial.

Para descargar el ejemplo en formato .gmz para GameMaker: Studio 1.4, pulsa el link:

https://drive.google.com/file/d/1JUJzol4YjgvF72SUfZOq4Ze70BX4ro91/view?usp=sharing

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *