Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Leandrotitere2332 en Agosto 14, 2017, 03:34:23 AM

Título: Problema Con Gravedades Y Movimientos
Publicado por: Leandrotitere2332 en Agosto 14, 2017, 03:34:23 AM
 :GM8: Hola, tengo un problema con la gravedad de mi personaje, ya que, en mi juego, el personaje se ve atraido hacia un planeta (tomen a Angry Birds Space de ejemplo) y lo que pasa es que si salto y me muevo hacia los lados, el personaje no cae. Se porque se causa esto pero no se como solucionarlo. Este sería el code de Step: FacingDirection=point_direction(x,y,oPlanet.x,oPlanet.y)
gravity_direction=FacingDirection
if (speed > 9) speed=9;


Eso más una accion de Set Gravity  direction:gravity_direction gravity:0.5

Y en las teclas de movimiento hay Acciones de Move Free (las 8 flechitas azules) y están configuradas así direction:FacingDirection +85 Speed:4
Y en la de salto hay triggers para que no se pueda saltar infinitamente, y otra Accion de Move Free que tiene direction:FacingDirection +180 Speed:10

Como les digo, funciona perfecto etcepto cuando el personaje se mueve en el aire, haciendo que detenga la Caída hasta que se deje de mover, alguna idea de como solucionarlo? Desde ya gracias  :GM8:

PD: lamento que no pueda poner todo en codes, pero yo me llevo mejor con las acciones, de igual manera aquí puse imagenes para que entiendan lo del movimiento http://imgur.com/a/LNYnf (http://imgur.com/a/LNYnf)
Título: Re:Problema Con Gravedades Y Movimientos
Publicado por: Clamud en Agosto 14, 2017, 09:05:09 PM
El problema es que las acciones de las flechas asignan la velocidad que ya había sido cambiada por la gravedad. Una solución es hacer el movimiento perpendicular a la dirección de la gravedad sin utilizar la variable speed.

En el evento Left escribe
[gml]
x += lengthdir_x(4, gravity_direction-90);
y += lengthdir_y(4, gravity_direction-90);
[/gml]

Y en el evento Right escribe
[gml]
x += lengthdir_x(4, gravity_direction+90);
y += lengthdir_y(4, gravity_direction+90);
[/gml]

Si la variable FacingDirection siempre es igual a gravity_direction podrías eliminarla y asignar gravity_direction directamente. También podrías quitar la acción Set Gravity y asignar la magnitud de la gravedad en el mismo bloque de código
[gml]
gravity_direction = point_direction(x,y, oPlanet.x,oPlanet.y);
gravity = 0.5;
if (speed > 9) speed=9;
[/gml]
Título: Re:Problema Con Gravedades Y Movimientos
Publicado por: Leandrotitere2332 en Agosto 15, 2017, 02:05:04 AM
Si, lo de fancing direction cambiaría en otras situaciones, gracias por todo!