Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: dokii en Septiembre 02, 2014, 10:15:40 PM

Título: problema con cambio de sprites al saltar
Publicado por: dokii en Septiembre 02, 2014, 10:15:40 PM
Hola. Resulta que dentro de mi juego, hay un minijuego de plataformas donde el personaje debe salta. Para que se moviera de izquierda a derecha implemente un joystick que funciona bien, y para que salte hay presionar la tecla up.El personaje salta, pero no puedo hacer que cambie los sprites(cuando va hacia arriba y cuando cae) al momento de saltar (he visto tutoriales sobre esto pero aun asi no me funciona). este codigo lo puse en el evento step del personaje.

//si esta activo el joystick entonces
d=global.dir
if (act=true){
//que se mueva en la direccion que apunta el joistick
if (d<45){ hspeed=5 sprite_index=spr_run}
else
if (d>135 and d<225){ hspeed=-5  sprite_index=spr_p_izq}
else
//si no esta activo entonces
hspeed=0
}
else
{
if hspeed =0 and vspeed = 0
sprite_index=spr_stand
}
else
{
if (vspeed < 0)
{
  if (left == true) { sprite_index = spr_moni_salto; }
  if (right == true) { sprite_index = spr_moni_salto; }
}
if (vspeed > 0)
{
  if (left == true) { sprite_index = spr_moni_salto_down; }
  if (right == true) { sprite_index = spr_moni_salto_down; }
  }

Gracias!!
Título: Re:problema con cambio de sprites al saltar
Publicado por: penumbra en Septiembre 03, 2014, 02:01:01 AM
Tienes cierto embrollo con los if, el código podría simplificarse, por ejemplo

if (vspeed < 0)
{
     if (left == true) { sprite_index = spr_moni_salto; }
     if (right == true) { sprite_index = spr_moni_salto; }
}


Los dos if anidados no son necesarios, porque estás usando el mismo sprite para ambas direcciones, además, lo único que importa es saber si el personaje tiene vspeed menor a 0 para saber si está saltando, incluso puede saltar verticalmente cuando izquierda y derecha son cero y mostrarse el sprite de salto de todas maneras. Lo mismo para el otro if que comprueba cuando vspeed es mayor a 0.
[gml]
if (vspeed < 0)
     sprite_index = spr_moni_salto;

if (vspeed > 0)
    sprite_index = spr_moni_salto_down;
[/gml]

Si no se muestra el sprite de salto es porque la condición (act=true) se cumple y el else donde están los dos ifs anteriores no se cumple, probablemente tengas que cambiar eso.
Título: Re:problema con cambio de sprites al saltar
Publicado por: dokii en Septiembre 03, 2014, 06:57:21 AM
gracias!! finalmente pude resolverlo, cambiando algunas partes del código.