Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: deathmetal en Diciembre 12, 2009, 11:00:34 PM

Título: gravedad y movimiento hacia arriba
Publicado por: deathmetal en Diciembre 12, 2009, 11:00:34 PM
pues tengo que mi personaje esta sobra una plataforma que se mueve de manera vertical, y el personaje se mueve con ella, y cuando te tiras de la plataforma pues tienes gravedad y cuando caes en una plataforma nueva cn movimiento vertical te mueves con ella, pero no logro hacerlo... ahi les van los codigos:

step personaje:

if place_free(x,y+4){gravity_direction=270 gravity=1}else{gravity=0;y+=-4;}

colission con la plataforma:

move_contact_solid(270,0)

create de la paltaforma:

vspeed=-4

y los codigos de moverse a derecha e izquierda con x+=4 y x+=-4 :O
Título: Re: gravedad y movimiento hacia arriba
Publicado por: romon_28 en Diciembre 12, 2009, 11:07:12 PM
mm...
fijate asi



/*esto para que se mueva*/
/*Ev_step*/
if instance_place(x,y,Obj_plataforma)
{
ID=instance_place(x,y,Obj_plataforma)
if instance_exists(ID)
{
  x+=ID.x-ID.xprevious
  y+=ID.y-ID.xprevious
}
}

todo lo demas creo que lo pusiste bien.. dejalo como esta
Título: Re: gravedad y movimiento hacia arriba
Publicado por: deathmetal en Diciembre 12, 2009, 11:11:45 PM
no, ahora nisiquiera se mueve ni nada...
Título: Re: gravedad y movimiento hacia arriba
Publicado por: bonachiu en Diciembre 12, 2009, 11:39:03 PM
Yo consegui ingeniarmelas para conseguir que el personaje se moviera con la plataforma da igual la direccion que esta tuviera y el movimiento que esta siguiera, que el personaje la iba a seguir, os garantizo que NO podeis apoyaros en las variables predefinidas tales como: vspeed, hspeed, direction, speed, xprevious, yprevious, teneis que crearos vuestro propio sistema de movimiento para la plataforma, la cuestion es que la plataforma antes de hacer un cambio brusco de direccion (como por ejemplo dejar de ir hacia arriba para ir hacia abajo en su clico de subida-bajada) debe avisar antes por medio de una variable que llamariaoms velocidadY de su intencion, y luego en el evento step de esta plataforma hacer y+=velocidadY. Con esto tienes la mayor parte del problema resuleto, ya que el personaje al detectar la plataforma debajo suya tendria este codigo (en evento step)

if(place_meeting(x,y+1+vspeed,Plat_Vertical)){
_plat=instance_place(x,y+1+vspeed,Plat_Vertical);
vspeed=0;
y+=_plat.velocidadY;


tambien es importante que en el evento colision con esta Plataforma pongamos:

move_contact_solid(270,12);
vspeed=0;