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. |
Como melhorar minha trajetória nesse caso?
- Mysterious Stranger
- Artista
- Reações: 0
- Mensagens: 62
- Localização: BH
-
- Contato:
Como melhorar minha trajetória nesse caso?
Olá, pessoal.
Eu estou tendo uma dificuldade matemática (nenhuma novidade). Eu fiz um código para uma sprite caminhar pela room. A cada step, tanto x quanto y andam uma quantidade igual. Tipo x += 2 e y += 2. Isso provoca a seguinte trajetória (vermelha):
Minha questão: como fazer para a trajetória ser como a linha verde? Ou seja, uma linha reta até o objetivo. Lembrando: se trata de uma sprite, não um objeto. Os passos alteram o x e y a cada step.
Eu estou tendo uma dificuldade matemática (nenhuma novidade). Eu fiz um código para uma sprite caminhar pela room. A cada step, tanto x quanto y andam uma quantidade igual. Tipo x += 2 e y += 2. Isso provoca a seguinte trajetória (vermelha):
Minha questão: como fazer para a trajetória ser como a linha verde? Ou seja, uma linha reta até o objetivo. Lembrando: se trata de uma sprite, não um objeto. Os passos alteram o x e y a cada step.
- Cataclysm185
- Novato
- Reações: 0
- Mensagens: 1
Re: Como melhorar minha trajetória nesse caso?
Olá, você tem que calcular angulo entre o seu objeto e o alvo dele e depois apicar o seno (para o x) e o cosseno (para o y)
Exemplo:
eu acho que assim vc ja vai ter um norte se der errado vc pode ir trocando o x e o y no passo 1 e os sinais nos passos 2 e 3.
Espero ter ajudado.
Exemplo:
Código: Selecionar todos
angulo = arctan2(xAlvo, yAlvo); //passo 1
velocidadeX = sin(degtorad(angulo)); //passo 2
velocidadeY = cos(degtorad(angulo)); //passo 3
Espero ter ajudado.
- Mysterious Stranger
- Artista
- Reações: 0
- Mensagens: 62
- Localização: BH
-
- Contato:
Re: Como melhorar minha trajetória nesse caso?
Valeu, man. Vou testar amanhã mesmo e retorno dizendo se deu certo ou errado.Cataclysm185 escreveu:Olá, você tem que calcular angulo entre o seu objeto e o alvo dele e depois apicar o seno (para o x) e o cosseno (para o y)
Exemplo:eu acho que assim vc ja vai ter um norte se der errado vc pode ir trocando o x e o y no passo 1 e os sinais nos passos 2 e 3.Código: Selecionar todos
angulo = arctan2(xAlvo, yAlvo); //passo 1 velocidadeX = sin(degtorad(angulo)); //passo 2 velocidadeY = cos(degtorad(angulo)); //passo 3
Espero ter ajudado.
- Mysterious Stranger
- Artista
- Reações: 0
- Mensagens: 62
- Localização: BH
-
- Contato:
Re: Como melhorar minha trajetória nesse caso?
Tarde pra todos.
Finalmente teste seu código, Cataclysm.
Valeu, man. Não teria chegado nesse código sem tua ajuda! Fica de referência para os outros.
Finalmente teste seu código, Cataclysm.
Do jeito q vc colocou não deu certo, mas eu fui adaptando como dava (como disse, matemática não é meu forte, mas sou bom com lógica). Troquei o calculo com radiano para grau e funcionou. Então cheguei nessa solução:Cataclysm185 escreveu:Código: Selecionar todos
angulo = arctan2(xAlvo, yAlvo); //passo 1 velocidadeX = sin(degtorad(angulo)); //passo 2 velocidadeY = cos(degtorad(angulo)); //passo 3
Código: Selecionar todos
if( pointDistance > 32 ){
var pointDirection = point_direction(xdistPlayer, ydistPlayer, xdistTower, ydistTower);
// calculo de como ir até o ponto
var velocidadeX = sin(pointDirection) * 2; //passo 1
var velocidadeY = cos(pointDirection) * 2; //passo 2
xdistPlayer += velocidadeX;
ydistPlayer += velocidadeY;
scr_dataPlayers("SET", vgGame.etapa_player, "xposition", xdistPlayer);
scr_dataPlayers("SET", vgGame.etapa_player, "yposition", ydistPlayer);
}else{
xdistPlayer = xdistTower;
ydistPlayer = ydistTower;
scr_dataPlayers("SET", vgGame.etapa_player, "xposition", xdistPlayer);
scr_dataPlayers("SET", vgGame.etapa_player, "yposition", ydistPlayer);
playerAction = 4;
}
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes