Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: fab62 en Mayo 12, 2010, 02:59:09 AM

Título: problema con piso corredor[SOLUCIONADO]
Publicado por: fab62 en Mayo 12, 2010, 02:59:09 AM
hola makeros, estoy haciendo un juego de megaman al estilo de los clasicos de NES... he estado haciendo estos ultimos dias el nivel de metalman, pero el piso corredizo me hace muchos bugs...Por ejemplo el personaje principal colisiona con este tipo de piso y se mueve normalmente de principio, todo bien, pero cuando intento saltar a otro piso corredizo con direcci?n distinta me sale el bug, se cambia la direccion del piso corredizo siendo un desastre en el efecto real... aca les dejo mis novatos codigos:

Evento de colision con el objeto corredizo que mueve al personaje hacia la derecha

hspeed = 3
if (vspeed > 0 and not place_free(x,y+vspeed))
{
sound_play(sound_landing)
move_contact(270);
vspeed = 0;
if state = "jump"{state = "stand";}
if state = "trow_jump"{state = "stand";}
}
else
{vspeed = 0; state = "jump";hspeed = 0}


En el evento de colision con el corredizo que mueve al personaje hacia la derecha solo cambie hspeed = 3 por hspeed = -3

y en el evento step
if vspeed > 0 || vspeed < 0{hspeed = 0}

el codigo del evento step lo puse para que se elimine la velocidad horizontal cuando el personaje este saltando...
mmmm.... me parece que estos codigos son innecesarios y se pueden simplificar...
dejo un mini demo del bug XD

Título: Re: problema con piso corredor
Publicado por: elviskelley en Mayo 12, 2010, 09:22:09 AM
te dire como hacerlo.
La verdad es que yo he hecho pisos corredisos, y descubri que lo mejor es que uses ubicacion de la cordenada X, y no el hspeed, tambien debes definir si esta colicionando con el piso mas cercano de lo contrario puede que te de un error donde el piso empiesa a moverse raro (dar fallos) para ello usa instance_nearest.
ejeplo.
en el step del personaje.
a=instance_nearest(x,y,objPisoCorrediso)
if place_meeting(x,y+1,a)
{x+=....}
algo por el estilo.
en la colicion del personaje con el piso coloca el move_contac_solid... vspeed =0; tu sabes deten la velocidad de descenso vertical, y permite movimiento.
Esto no dara ningun error, si quieres el codigo completo descarga el editable de Geometrix2 que esta en las descargas aca en la comunidadgm, en buscar recursos. pero lo mejor es que no solo copies y pegues si no que entiendas como funciona.
Título: Re: problema con piso corredor
Publicado por: fab62 en Mayo 13, 2010, 01:02:30 AM
muchas gracias , este tema termina como solucionado XD