Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: GaryVega en Junio 09, 2018, 04:45:20 AM

Título: problema con salto
Publicado por: GaryVega en Junio 09, 2018, 04:45:20 AM
Lo que pasa es que me e topado con un errorcito de codigo y no e descubierto como revertirlo ni se como evitarlo, aveces sale y aveces no sale

tengo una serie de scrpits que inducen el stado de salto y despues el de caida de un objeto pero al precionar la tecla salto el objeto no salta, solo aparece en la cordenada Y, donde deberia estar la altura maxima del salto, en vez de ser un movimiento gradual hasta dicho punto solo aparece sin mas.

Alguien de buen corazon podria explicarme porque pasa eso y algunos consejos para evitar repetirlo.

este es mi codigo de salto

///Salto
if (state_new)
{
   image_index  = 0;
   sprite_index = sprFireAir;
   image_index  = 0;
   
   y-= jumpUp;  //Altura de Salto
   if (jumpReleased)   //Salto Variable
   {
      if (vsp < 0) vsp *= 0.8;
   }
}


if (vsp=0) image_index = 1;

grounded = place_meeting (x, y + 1, objBlock);   //Variable "Parado en el Suelo"

//Gravedad
if (!grounded)
{
   vsp = fallSpd;
}

y += vsp;   //Formula de la velocidad Vertical

move =(-left) + right;


//colision horizontal
if (place_meeting(x + hsp, y, objBlock))
{
   while (!place_meeting (x + sign (hsp), y, objBlock ))
   {
      x += sign (hsp);
   }
   hsp = 0;
}

if (vsp<0) state_switch("fall")

Codigo de Caida
///Caida
if (state_new)
{
   sprite_index = sprFireAir;
}


vsp = fallSpd;

if (vsp<0)image_index=2

//Variable "Parado en el Suelo"
grounded = place_meeting (x, y + 1, objBlock);

//Colision Vertical
if (place_meeting(x, y + vsp, objBlock))
{
   while (!place_meeting (x, y + sign (vsp), objBlock ))
   {
      y += sign (vsp);
   }
   vsp = 0;
}


y += vsp;
x += hsp;


//Velocidad Horiontal
if (move != 0) hsp = airSpd*move;


//colision horizontal
if (place_meeting(x + hsp, y, objBlock))
{
   while (!place_meeting (x + sign (hsp), y, objBlock ))
   {
      x += sign (hsp);
   }
   hsp = 0;
}



//===Cambio a estado de Reposo
if (grounded)
   state_switch("idle")
Título: Re:problema con salto
Publicado por: 3dgeminis en Junio 09, 2018, 11:20:03 PM
Lo ma probable es que sea esta parte
[gml]
y-= jumpUp;  //Altura de Salto
[/gml]
que deberia ser
[gml]
vsp-= jumpUp;  //Altura de Salto
[/gml]
Otra cosa es que tenes el codigo de colision horizontal 2 veces ???
Un consejo es que deberias dejar la parte de cambio de sprites para despues que tengas el movimiento y colisiones listo.
Título: Re:problema con salto
Publicado por: Clamud en Junio 10, 2018, 03:02:55 PM
¿En qué parte se asigna state_new?