Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: LandoX99-GMC en Marzo 09, 2014, 10:25:35 AM

Título: Plataformas Atravesables
Publicado por: LandoX99-GMC en Marzo 09, 2014, 10:25:35 AM

Ayuda!!! quiero que mi personaje atraviese una plataforma o piso desde abajo y que al quedar arriba de la plataforma se quede ahí, como en Super Mario.


GRACIAS A LOS  QUE ME AYUDEN
;)
Título: Re:Plataformas Atravesables
Publicado por: ZombMax en Marzo 09, 2014, 01:39:20 PM
CREO QUE LO HE CONSEGUIDO:

Primero vas al evento step de la plataforma que quieres que tu personaje atraviese sólo por debajo, y pones este código
[gml]if obj_player.vspeed >= 0
{solid=true;}
else
{solid=false;}[/gml]
(Sustituye obj_player por el nombre del objeto de tu personaje)

Básicamente esto hace que si el personaje está saltando, el objeto no sea sólido, pero si no lo está haciendo, sí lo será.

Después vas al evento de colisión de tu jugador con la plataforma, y pones este otro código:

[gml]if other.solid
{move_contact_solid(direction,12);
vspeed=0}[/gml]

Y esto hace que si el otro objeto es sólido, haga colisión como un objeto normal.

De momento no he visto fallos, pero si veo alguno te lo digo.

Edito: Tal y como me temía, si el jugador llega a su altura máxima mientras atraviesa la plataforma, se queda trabado, el código no funciona del todo.
Título: Re:Plataformas Atravesables
Publicado por: LandoX99-GMC en Marzo 09, 2014, 06:33:20 PM
Aun no puedo, el personaje se mueve 16px a la izquierda
Título: Re:Plataformas Atravesables
Publicado por: gortz en Marzo 09, 2014, 07:32:10 PM
lo que debes hacer es crear una variable que indique cuando estas tocando el suelo
algo asi como

//Si el personaje esta a punto de tocar el muro
piso=0;
if place_meeting(x,y+vspeed,muro)
{
    while(!place_meeting(x,y+1,muro)) y+=1;
    vspeed=0;
    piso=1;
}
else piso=0;

if place_meeting(x+hspeed,y,muro)
{
    while(!place_meeting(x+sign(hspeed,y,muro))) x+=sign(hspeed);
    hspeed=0;
}

Título: Re:Plataformas Atravesables
Publicado por: LowHertzs en Marzo 09, 2014, 07:41:33 PM
Yo no tengo la solución al problema aquí planteado.

Pero te dejo una serie de tutoriales de Adderly Céspedes, que enseñan a crear un juego igual que el Mario Bros, quizás aquí puedas hallar la solución a tu problema.

https://www.youtube.com/watch?v=ymNt4X8FJko

Saludos~
Título: Re:Plataformas Atravesables
Publicado por: LandoX99-GMC en Marzo 09, 2014, 07:46:43 PM
Cita de: gortz en Marzo 09, 2014, 07:32:10 PM
lo que debes hacer es crear una variable que indique cuando estas tocando el suelo
algo asi como

//Si el personaje esta a punto de tocar el muro
piso=0;
if place_meeting(x,y+vspeed,muro)
{
    while(!place_meeting(x,y+1,muro)) y+=1;
    vspeed=0;
    piso=1;
}
else piso=0;

if place_meeting(x+hspeed,y,muro)
{
    while(!place_meeting(x+sign(hspeed,y,muro))) x+=sign(hspeed);
    hspeed=0;
}



En donde debo de colocar este codigo?
Título: Re:Plataformas Atravesables
Publicado por: LowHertzs en Marzo 09, 2014, 07:48:46 PM
Cita de: LandoX99-GMC en Marzo 09, 2014, 07:46:43 PM
Cita de: gortz en Marzo 09, 2014, 07:32:10 PM
lo que debes hacer es crear una variable que indique cuando estas tocando el suelo
algo asi como

//Si el personaje esta a punto de tocar el muro
piso=0;
if place_meeting(x,y+vspeed,muro)
{
    while(!place_meeting(x,y+1,muro)) y+=1;
    vspeed=0;
    piso=1;
}
else piso=0;

if place_meeting(x+hspeed,y,muro)
{
    while(!place_meeting(x+sign(hspeed,y,muro))) x+=sign(hspeed);
    hspeed=0;
}



En donde debo de colocar este codigo?

Deberías de crear la variable global, y ponérsela al personaje.
Título: Re:Plataformas Atravesables
Publicado por: LandoX99-GMC en Marzo 09, 2014, 09:22:57 PM
ok gracias lo intentare, por si alguien quiere probar mi juego se llama:

WHITED 0.5

JUEGO EN DESARROLLO  ;)