Obrigado por visitar a The Game Makers Brasil 😁 Use o fórum de Dúvidas para fazer perguntas. Se está em busca de aprender dê uma olhada nos tutoriais.

Personagem mudando a escala ao movimentar pros lados

Perguntas? A comunidade te ajuda a resolver.
Avatar do usuário
bonahenrique
Novato
Novato
Reações: 0
Mensagens: 1

Personagem mudando a escala ao movimentar pros lados

Mensagem por bonahenrique » Qui Jan 25, 2024 1:54 pm

Ola, estou com um problema de movimentação no game maker. Estou fazendo meu personagem se movimentar no eixo X com o A/D e pular com o espaço, porem, precebi que ao andar com o A/D, os sprites do personagem se achatavam.
Acredito que o problema esteja nessa parte do meu codigo
if(hspd !=0)
{
image_xscale = sign(hspd);

}
Esse codigo reescala o personagem pra -1 ou 1, dependendo a direção que ele esta se movendo, porem não esta funcionando perfeitamente. Vou deixar aqui em baixo o codigo da minha movimentação completa.

if(move)
{
sprite_index = rodando_sheat;
move_dir = point_direction(0,0,key_right - key_left,0);
move_speed = approach(move_speed,move_speed_max,acc);
}
else
{
sprite_index = sprite_sheat;
move_speed = approach(move_speed,0,dcc);
}

hspd = lengthdir_x(move_speed,move_dir);

if(hspd !=0)
{
image_xscale = sign(hspd);

}

var chao = place_meeting(x,y+1,bloco);

if(chao)
{
fake_time = fake_time_max;
}
else
{
fake_time--;
if(vspd < 0)
{
sprite_index = jump;
}
else if(vspd > 0)
{
sprite_index = down;
}

}

Avatar do usuário
ValdeciVieira
Moderador
Moderador
Reações: 8
Mensagens: 122
Localização: Rio de Janeiro, Brasil

Re: Personagem mudando a escala ao movimentar pros lados

Mensagem por ValdeciVieira » Dom Fev 04, 2024 6:23 pm

Não noto nenhum problema no código, embora ache difícil, talvez o if não esteja enxergando o hspd como 0 mas o sign sim?
Eu fiz um teste aqui no game maker 1.4 (que é o que roda na minha "máquina") e a partir da divisão de 1 por 100000 o if detecta como 0 mas o sign não, mas esse é justamente o contrário do seu caso.
Tenta trocar o:

Código: Selecionar todos

if(hspd != 0)
{
image_xscale = sign(hspd)
}
por:

Código: Selecionar todos

if(sign(hspd) != 0)
{
image_xscale = sign(hspd)
}

Responder

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes