Game Maker Studio

Tutorial: Plataformas atravesables (one-way)

Las plataformas atravesables, también conocidas en inglés como one-way platforms, son un recurso muy explotado en los juegos de plataformas en 2D. Este tipo de suelos no frenan el jugador si los atraviesa de abajo hacia arriba, pero sin embargo son sólidos cuando la dirección es la contraria (el jugador se posa sobre ellas).

oneway

Para empezar, hay que aclarar que para conseguir un buen resultado, hay que prescindir del sistema de sólidos que trae Game Maker Studio (el tick que se puede marcar para cada objeto, indicando si es Solid o no), ya que es incompatible con la solución que se propone en este pequeño tutorial. Para gestionar los movimientos del jugador y sus colisiones con el suelo y paredes, se recomienda confeccionarlo en el evento Step del jugador (aquí tenéis un buen tutorial para ello). Teniendo cumplido ese prerrequisito, podemos ponernos manos a la obra:

  1. Una vez que hemos creado un sprite para nuestra plataforma atravesable, creamos el objeto. Para el evento Create vamos a insertar la siguiente línea de código:
    sprite_index = -1;

    Esto lo que hace es que no exista un sprite predefinido para nuestro objeto. Este punto es interesante, ya que nosotros forzaremos en el paso 3 el sprite a dibujar.

  2. Para el evento Step tenemos preparadas las siguientes líneas:
    if (round(Player.y + Player.sprite_height/2) > y){
        mask_index = -1;
    }else{
        mask_index = s_floor;
    }

    En lenguaje humano: si el jugador tiene al menos la mitad de su cuerpo por debajo de la plataforma, esta no tendrá máscara, por lo que no habrá colisión y el salto del jugador no cesará aunque su cabeza choque contra la plataforma. En caso de que esté por encima, la máscara será la propia del sprite, lo que mágicamente hará que ahora sí que se detecte la colisión, y el jugador quede sobre la plataforma.

  3. Por último, en el evento Draw:
    draw_sprite(s_floor,-1,x,y);

    Lo que hará que siempre se dibuje la plataforma, y no desaparezca aunque la máscara sea nula

Y de esta forma tan sencilla, tenemos una plataforma atravesable desde abajo.

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