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
- bonahenrique
- Novato
- Reações: 0
- Mensagens: 1
Personagem mudando a escala ao movimentar pros lados
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;
}
}
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;
}
}
- ValdeciVieira
- Moderador
- Reações: 8
- Mensagens: 122
- Localização: Rio de Janeiro, Brasil
Re: Personagem mudando a escala ao movimentar pros lados
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:
por:
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)
}
Código: Selecionar todos
if(sign(hspd) != 0)
{
image_xscale = sign(hspd)
}
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes