Eu tenho uma Entity
instância que é atualizada a cada tick do jogo. Vamos apenas assumir que a entidade avança constantemente. Eu gostaria de poder atribuir o ângulo da entidade a uma função que a faz se mover nessa direção:
moveForward(90);
deve fazê-los mover para a direita. Se eu declarasse minha rotação como global int
, então fazer
moveForward(rotation);
rotation++;
o faria traçar um pequeno círculo com seu movimento.
Como posso fazer isso? Suponho que isso envolva matemática vetorial; Eu não conheço, então uma breve explicação seria legal.
fonte
A outra resposta está errada a partir de agora. Para mover-se corretamente ao longo de um plano com base em uma rotação, faça o seguinte:
No entanto, eu recomendo criar uma variável para cos / sin que você atualize apenas quando a rotação mudar, para que você não a calcule 4 vezes por carrapato.
O strafeSpeed se moveria de um lado para o outro, o forwardSpeed para avançar ao longo de sua rotação.
edit: tesselode faz a mesma coisa, exceto que ele não tem movimento de um lado para o outro.
fonte
Você disse que os ticks de atualização são, portanto, suponho que você não tenha uma taxa de quadros variável. Se então:
x + = velocidade * math.cos (ângulo)
y + = velocidade * math.sin (ângulo)
Se você estiver usando taxa de quadros variável, também precisará multiplicar por tempo delta.
fonte