Marzo 05, 2015, 01:29:00 AM Ultima modificación: Marzo 05, 2015, 03:13:15 AM por Yoo
Alguien sabe un buen codigo o script para las plataformas movible HORIZONTALES, ya hice las verticales q estan bien, pero me falta las horizontales, he visto en un tutorial q decia algo asi:

if place_meeting(x,y-1,obj_jugador)
        obj_jugador.x=hspeed

Pero este código no es muy bueno, hay varios errores(el aumento de velocidad, y al ir en contra de la direccion de la plataforma, parece que se queda kieto), bueno si alguien lo tiene le agradeceria mucho q lo publique.
GRACIAS!!!!  :D

NOTA: Estoy usando "x" y "y" como movimiento, si posee un codigo bueno para plataformas moviles VERTICALES tambien me interesaria.   :)
- Empty -

Yo lo hago de la siguiente forma:
Creas una variable que contendra la id de la plataforma movil en la que se encuentre el jugador

CREATE
plataforma_id=0

END STEP (importante debe ser el evento END STEP)
plataforma_id=instance_place(x,y+1,plataforma_movil)

if plataforma_id>0
{
x+=plataforma_id.x-plataforma_id.xprevious
}

Ya lo probé, y es lo mismo, al ir en contra parece q esta parado y al caminar en misma direccion de la plataforma, aumenta su velocidad!!!!  XD
- Empty -

#3 Marzo 05, 2015, 04:07:45 AM Ultima modificación: Marzo 05, 2015, 06:54:29 AM por Silver_light
A lo mejor puedes colocar una condición para que no se sume si presionas las teclas de direccion:

[GML]

plataforma_id=instance_place(x,y+1,plataforma_movil)

if plataforma_id != noone
{
   if ( keyboard_check_released(vk_left) || keyboard_check_released(vk_right) )
      x+=plataforma_id.x-plataforma_id.xprevious
}

[/GML]

No se si funcione a ciencia cierta, la verdad. Pero supongo que la X no debería sumarse o restarse si estás presionando las direcciones, para evitar el efecto de aceleracion o de freno.

Cita de: Silver_light en Marzo 05, 2015, 04:07:45 AM
A lo mejor puedes colocar una condición para que no se sume si presionas las teclas de direccion:

[GML]

plataforma_id=instance_place(x,y+1,plataforma_movil)

if plataforma_id != noone
{
   if ( keyboard_check_released(vk_left) || keyboard_check_released(vk_right) )
      x+=plataforma_id.x-plataforma_id.xprevious
}

[/GML]

No se si funcione a ciencia cierta, la verdad. Pero supongo que la X no debería sumarse no restarse si estás presionando las direcciones, para evitar el efecto de aceleracion o de freno.
Te me adelantaste. De esa forma ya queda arreglado, hice lo mismo pero usando una variable para saber cuando se esta moviendo, pero tu codigo queda mejor y mas simple.

Cita de: Silver_light en Marzo 05, 2015, 04:07:45 AM
A lo mejor puedes colocar una condición para que no se sume si presionas las teclas de direccion:

[GML]

plataforma_id=instance_place(x,y+1,plataforma_movil)

if plataforma_id != noone
{
   if ( keyboard_check_released(vk_left) || keyboard_check_released(vk_right) )
      x+=plataforma_id.x-plataforma_id.xprevious
}

[/GML]

No se si funcione a ciencia cierta, la verdad. Pero supongo que la X no debería sumarse o restarse si estás presionando las direcciones, para evitar el efecto de aceleracion o de freno.

Ya lo probé, y es lo mismo q no poner nada, porque resbala de la plataforma cuando esta kieto, y al caminar no parece q avanza!!!
(El codigo va en el evento END ESTEP del jugador, no?)
- Empty -

Te dejo un ejemplo que hice y que funciona. La velocidad de la plataforma debe ser menor que la del jugador si no pareceria que el jugador no avanza o se moviera hacia el lado opuesto si la velocidad fuera mayor.

Lo de ir en contra de la direccion de la plataformas esta solucionado en tu example, pero ahora al ir en la misma direccion de la plataformas, parece q rectrocediera lentamente, sin avanzar nada  :-\
- Empty -