personagem fica trocando entre pulando e parado quando cai no chão gms2 Tópico resolvido
Enviado: Qua Jan 06, 2021 2:27 pm
apos colocar o codigo pro personagem entrar no estado de queda automaticamente , quando ele bate no chao fica trocando entre os estados de pulo e parado rapidamente, ou caso mecha na sprite, ele entra no chão, alguem sabe como corrigir?
case "pulando":
{
//Estou caindo
if (velv > 0)
{
sprite_index = spr_player_fall01;
}
else
{
sprite_index = spr_player_pulo;
//Garantindo que a animaçao não se repita
if (image_index >= image_number-1)
{
image_index = image_number-1
}
}
//Condição de troca de estado
if (chao)
{
estado = "parado";
velh = 0;
}
else if (bladedarsh)
{
estado = "bdarsh";
image_index = 0;
}
else if (hkick)
{
estado = "hkick";
image_index = 0;
velv = 0;
}
break;
}
case "parado":
{
//Comportamento do estado
sprite_index = spr_player1_parado;
//Condição de troca de estado
//Movendo
if (rigth || left)
{
estado = "movendo";
}
else if (jump || velv !=0)
{
estado = "pulando";
velv = (-max_velv * jump);
image_index = 0;
}
else if (attack)
{
estado = "ataque";
velh = 0;
image_index = 0;
}
else if (bladedarsh)
{
estado = "bdarsh";
image_index = 0;
}
else if (hkick)
{
estado = "hkick";
image_index = 0;
}
else if (uppercut)
{
estado = "uppercut";
image_index = 0;
}
break;
}
case "movendo":
{
//Comportamento do estado de movimento
sprite_index = spr_player_walk;
//Condição de troca de estado
//parado
if (abs(velh) < .1)
{
estado = "parado";
velh = 0;
}
else if (jump)
{
estado = "pulando";
velv = -max_velv;
image_index = 0;
}
else if (attack)
{
estado = "ataque";
velh = 0;
image_index = 0;
}
else if (bladedarsh)
{
estado = "bdarsh";
image_index = 0;
}
else if (hkick)
{
estado = "hkick";
image_index = 0;
}
break;
}
case "pulando":
{
//Estou caindo
if (velv > 0)
{
sprite_index = spr_player_fall01;
}
else
{
sprite_index = spr_player_pulo;
//Garantindo que a animaçao não se repita
if (image_index >= image_number-1)
{
image_index = image_number-1
}
}
//Condição de troca de estado
if (chao)
{
estado = "parado";
velh = 0;
}
else if (bladedarsh)
{
estado = "bdarsh";
image_index = 0;
}
else if (hkick)
{
estado = "hkick";
image_index = 0;
velv = 0;
}
break;
}
case "parado":
{
//Comportamento do estado
sprite_index = spr_player1_parado;
//Condição de troca de estado
//Movendo
if (rigth || left)
{
estado = "movendo";
}
else if (jump || velv !=0)
{
estado = "pulando";
velv = (-max_velv * jump);
image_index = 0;
}
else if (attack)
{
estado = "ataque";
velh = 0;
image_index = 0;
}
else if (bladedarsh)
{
estado = "bdarsh";
image_index = 0;
}
else if (hkick)
{
estado = "hkick";
image_index = 0;
}
else if (uppercut)
{
estado = "uppercut";
image_index = 0;
}
break;
}
case "movendo":
{
//Comportamento do estado de movimento
sprite_index = spr_player_walk;
//Condição de troca de estado
//parado
if (abs(velh) < .1)
{
estado = "parado";
velh = 0;
}
else if (jump)
{
estado = "pulando";
velv = -max_velv;
image_index = 0;
}
else if (attack)
{
estado = "ataque";
velh = 0;
image_index = 0;
}
else if (bladedarsh)
{
estado = "bdarsh";
image_index = 0;
}
else if (hkick)
{
estado = "hkick";
image_index = 0;
}
break;
}