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
;)
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.
Aun no puedo, el personaje se mueve 16px a la izquierda
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;
}
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~
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?
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.
ok gracias lo intentare, por si alguien quiere probar mi juego se llama:
WHITED 0.5
JUEGO EN DESARROLLO ;)