Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Domenec en Marzo 06, 2013, 12:16:10 AM

Título: Plataforma movil vertical [solucionado]
Publicado por: Domenec en Marzo 06, 2013, 12:16:10 AM
Buenas de nuevo a todos
He estado mirando como hacer una plataforma vertical móvil. .
He conseguido que se mueva arriba y abajo pero no consigo que el personaje una vez en el,  suba o baje.
Usando algunos consejos de otros post el personaje sube con la plataforma pero no me salta desde ella y a parte,  cuando baja,  el personaje va como descompensado y no baja al unísono con la plataforma.
He encontrado un tutorial en YouTube pero es a base de scripts y no creo que sea algo tan complicado de hacer.

A ver si alguien me hecha una mano.

Gracias.
Título: Re:Plataforma movil vertical
Publicado por: elviskelley en Marzo 06, 2013, 01:44:23 AM
Bueno es estos casos se usan dos event para lograr funcione.
primero en el event collision con la plataforma que sube y baja.
move_contac_solid(direction,vspeed) vspeed=0;

Ahora en el event end step.
if place_meeting(x,y+2,objPlataformaSubeBaja) then
{y=(objPlataformaSubeBaja.y-sprite_height)}
Título: Re:Plataforma movil vertical
Publicado por: Domenec en Marzo 06, 2013, 07:32:26 AM
Cita de: elviskelley en Marzo 06, 2013, 01:44:23 AM
Bueno es estos casos se usan dos event para lograr funcione.
primero en el event collision con la plataforma que sube y baja.
move_contac_solid(direction,vspeed) vspeed=0;

Ahora en el event end step.
if place_meeting(x,y+2,objPlataformaSubeBaja) then
{y=(objPlataformaSubeBaja.y-sprite_height)}

Este código que pones ¿sirve tanto para cuando baja como cuando sube la plataforma?
Título: Re:Plataforma movil vertical
Publicado por: elviskelley en Marzo 06, 2013, 10:45:44 AM
Generalmente uno hace pruebas y luego es que dice. -Me funciono o no por esto y esto otro-.
Título: Re:Plataforma movil vertical
Publicado por: Domenec en Marzo 06, 2013, 11:19:53 AM
Cita de: elviskelley en Marzo 06, 2013, 10:45:44 AM
Generalmente uno hace pruebas y luego es que dice. -Me funciono o no por esto y esto otro-.

Tienes razón pero lo pregunto porque estoy en el trabajo y hasta la noche no puedo probarlo. De esta manera me quito dudas de encima.  :)
Título: Re:Plataforma movil vertical
Publicado por: Domenec en Marzo 06, 2013, 10:21:00 PM
Me sigue fallando  :-[
Cuando baja me sigue dando saltitos el personaje y cuando sube, se cae de la plataforma.
Alguna idea mas?
Título: Re:Plataforma movil vertical
Publicado por: elviskelley en Marzo 07, 2013, 01:07:01 AM
Te dare mi codigo el que he usado siempre.
Primero en la plataforma que sube y baja haces esto.
Event create de la plataforma que sube y baja.
rutud=false; //para la direccion.

Event End step de la misma plataforma.
if rutud
{y+=2;}
if !rutud
{y-=2;}
if y>ystart+128
{rutud=false; }
if y<ystart-128
{rutud=true;}
//sube y baja

Ahora en el obj_Jugador o como le llames.
Event End step del jugador.
//...Parte de las plataformas moviles...//
//movil_Vertical--//
if instance_exists(objPlataformUD)
{
if objPlataformUD.rutud and place_meeting(x+0,y+8,objPlataformUD)
{y+=2;}
else
if !objPlataformUD.rutud and place_meeting(x+0,y+8,objPlataformUD)
{y-=2;}
}

Event collision del jugador con la plataforma
if (vspeed > 0 && not place_free(x,y+vspeed) and y < other.y+8)
{
move_contact_solid(270,10);
vspeed = 0;
}

Este es mi codigo  funciona perfectamente cualquier error es tuyo-.
Título: Re:Plataforma movil vertical
Publicado por: luckylandia007 en Marzo 07, 2013, 03:57:38 AM
creo que tu personaje da saltitos cuando cae con la plataforma porque la cantidad de pixeles que baja la plataforma es mayor a la que tu personaje cae..
imagina todo en camara lenta ( o poné room_speed = 5  )
tu personaje cuando cae (osea no hay nada abajo) se desplaza 3 pixeles por step para abajo (por ejemplo)
pero al mismo tiempo la plataforma baja 5 pixeles por step.
proba igualar las cantidades de pixeles que descienden cada uno, no es lo ideal pero si no queres usar script o gml puede funcionar..
Título: Re:Plataforma movil vertical
Publicado por: Domenec en Marzo 07, 2013, 07:37:57 AM
Cita de: elviskelley en Marzo 07, 2013, 01:07:01 AM
Te dare mi codigo el que he usado siempre.
Primero en la plataforma que sube y baja haces esto.
Event create de la plataforma que sube y baja.
rutud=false; //para la direccion.

Event End step de la misma plataforma.
if rutud
{y+=2;}
if !rutud
{y-=2;}
if y>ystart+128
{rutud=false; }
if y<ystart-128
{rutud=true;}
//sube y baja

Ahora en el obj_Jugador o como le llames.
Event End step del jugador.
//...Parte de las plataformas moviles...//
//movil_Vertical--//
if instance_exists(objPlataformUD)
{
if objPlataformUD.rutud and place_meeting(x+0,y+8,objPlataformUD)
{y+=2;}
else
if !objPlataformUD.rutud and place_meeting(x+0,y+8,objPlataformUD)
{y-=2;}
}

Event collision del jugador con la plataforma
if (vspeed > 0 && not place_free(x,y+vspeed) and y < other.y+8)
{
move_contact_solid(270,10);
vspeed = 0;
}

Este es mi codigo  funciona perfectamente cualquier error es tuyo-.

Me ha gustado la ultima parte.  :D
Gracias por el codigo, en cuanto lo pruebe, comento.

Cita de: luckylandia007 en Marzo 07, 2013, 03:57:38 AM
creo que tu personaje da saltitos cuando cae con la plataforma porque la cantidad de pixeles que baja la plataforma es mayor a la que tu personaje cae..
imagina todo en camara lenta ( o poné room_speed = 5  )
tu personaje cuando cae (osea no hay nada abajo) se desplaza 3 pixeles por step para abajo (por ejemplo)
pero al mismo tiempo la plataforma baja 5 pixeles por step.
proba igualar las cantidades de pixeles que descienden cada uno, no es lo ideal pero si no queres usar script o gml puede funcionar..


Si es eso, de hecho, logre que bajara y subiera perfectamente pero "clavado en la plataforma" con lo que no podia saltar. Solo desplazarme lateralmente. Luego consegui hacerlo saltar pero me daba errores de posicion relacionados con el vspeed. Vamos que tenia un lio ahi que no lo sabe nadie y al final decidi rehacerlo todo.
Creo que tengo conflictos con el codigo de gravedad del personaje y no sabia si igualas vspeeds de ascensor y personaje o simplemente las posiciones "y" de ambos. A ver que tal con el codigo de Elviskelley.
Título: Re:Plataforma movil vertical
Publicado por: Domenec en Marzo 07, 2013, 01:27:39 PM
Funciono perfecto el codigo. Mil gracias Elviskelley.
Ahora tengo el problema de que si hay mas de una plataforma en el mismo room, solo me funciona bien en una.
He intentado jugar con la funcion other pero tampoco tengo claro si lo voy a solucionar asi...
¿Algun sugerimiento?

Gracias de antemano...
Título: Re:Plataforma movil vertical
Publicado por: elviskelley en Marzo 08, 2013, 01:13:59 AM
si cambiando el Event End step por este codigo.
//movil_Vertical--//

if instance_exists(objPlataformUD)
{
var plat;
plat=instance_nearests(x,y,objPlataformUD);
if plat.rutud and place_meeting(x+0,y+8,plat)
{y+=2;}
else
if !plat.rutud and place_meeting(x+0,y+8,plat)
{y-=2;}
}
Título: Re:Plataforma movil vertical
Publicado por: Domenec en Marzo 08, 2013, 11:02:14 AM
Cita de: elviskelley en Marzo 08, 2013, 01:13:59 AM
si cambiando el Event End step por este codigo.
//movil_Vertical--//

if instance_exists(objPlataformUD)
{
var plat;
plat=instance_nearests(x,y,objPlataformUD);
if plat.rutud and place_meeting(x+0,y+8,plat)
{y+=2;}
else
if !plat.rutud and place_meeting(x+0,y+8,plat)
{y-=2;}
}

Mil gracias Elviskelly.
Esta noche lo pruebo y edito el post.  :)
pd: te debo una...(bueno...unas cuantas ya... ;D)
Título: Re:Plataforma movil vertical
Publicado por: Domenec en Marzo 08, 2013, 11:32:13 PM
Funciono perfecto!!!
Tengo algunas cosillas por pulir pero de momento me las apaño.  :)
Por otro lado, tu ayuda me ha servido tambien para meter las plataformas de movimiento horizontal.

Una vez mas...gracias por la ayuda.