Game Maker Studio

Tutorial: Plataformas que se rompen al pisarlas

El objetivo de este pequeño tutorial es dar una forma sencilla para crear plataformas que se vayan “deshaciendo” cuando se pisan y si el jugador permanece mucho tiempo sobre ellas, que terminen desapareciendo. Se van a proponer dos variantes: la plataforma que deja de destruirse si se deja de pisar, y la que una vez es pisada por primera vez el proceso de destrucción se inicia hasta el final.

plat_temporal2

La parte común a las dos variantes es la creación de una serie de imágenes dentro del sprite que contengan cada una de las fases de la plataforma: desde que está nueva (imagen 0) hasta que está casi destruida.

imagenes_plat_destruida

OPCIÓN A: Destrucción solo mientras se pisa

Evento Create:

image_speed = 0;
vida = 200;
vida_max = vida;

Primero evitamos que las imágenes de sprite se muestren sin control, ya que solo queremos mostrar la primera al inicio. Luego creamos una variable que contendrá la “vida” útil que le queda a la plataforma, que inicialmente será 200. La variable vida_max es solo una copia de seguridad para saber en todo momento cuál fue la vida máxima al inicio, la usaremos en el evento Draw.

Evento Step:

if (place_meeting(x,y-1,Player)){
    vida -= 3;
}
if (vida <= 0){
    instance_destroy();
}

Para cada frame, comprobamos si el objeto Player se encuentra un píxel encima de la plataforma (la estaría pisando). En caso de que sea así, vamos restando 3 a la vida de la plataforma en cada comprobación. Una vez que la vida de la plataforma ha acabado, la eliminamos. Id regulando vosotros los valores de vida inicial y vida que se elimina en cada frame para ajustar el tiempo total a vuestro juego.

Evento Draw:

max_imagenes = image_number - 1;
image_index = max_imagenes - floor(vida*max_imagenes/vida_max);
draw_self();

En cada instante, se dibujará la imagen de la plataforma que corresponda a la vida que le queda. La variable max_imagenes contiene el índice máximo que podrá coger la imagen (recordad que yo decidí crear 7 imágenes, luego el índice irá de 0 a 6).

 

OPCIÓN B: Destrucción completa aunque se deje de pisar

En este caso, tan solo tendremos que hacer que, una vez la plataforma es pisada por primera vez, su vida comience a disminuir hasta que llegue a cero, sin comprobar si el jugador sigue encima o no.

Evento Create:

image_speed = 0;
vida = 200;
vida_max = vida;
pisada = false;

Tan solo incluimos una nueva variable que indique si ha sido pisada. Al crearse, obviamente será falsa.

Evento Step:

if (place_meeting(x,y-1,Player) && !pisada){
    pisada = true;
}
if (pisada){
    vida -= 3;
}
if (vida <= 0){
    instance_destroy();
}

Una vez que el jugador pise la plataforma, ésta comenzará a degradarse, ya que la variable pisada será cierta para cada frame.

Evento Draw:

max_imagenes = image_number - 1;
image_index = max_imagenes - floor(vida*max_imagenes/vida_max);
draw_self();

Este evento se queda igual que en el caso anterior.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s