J'ai une Entity
instance qui est mise à jour à chaque tick du jeu. Supposons simplement que l'entité progresse constamment. Je voudrais pouvoir donner l'angle de l'entité à une fonction qui la fait bouger dans cette direction:
moveForward(90);
devrait les faire bouger vers la droite. Si j'ai déclaré ma rotation en tant que global int
, alors faire
moveForward(rotation);
rotation++;
lui ferait tracer un petit cercle avec son mouvement.
Comment puis-je faire ceci? Je suppose que cela implique des mathématiques vectorielles; Je n'en connais pas, donc une brève explication serait bien.
la source
L'autre réponse est erronée à partir de maintenant, pour vous déplacer correctement le long d'un plan basé sur une rotation, vous procédez comme suit:
Cependant, je vous recommande de créer une variable pour cos / sin que vous ne mettez à jour que lorsque la rotation change afin de ne pas la calculer 4 fois par tick.
La strafeSpeed se déplacerait d'un côté à l'autre, la forwardSpeed pour avancer le long de votre rotation.
edit: tesselode fait la même chose sauf qu'il n'a pas de mouvement latéral.
la source
Vous avez dit que la mise à jour est cochée, donc je suppose que vous n'avez pas de fréquence d'images variable. Si c'est le cas:
x + = vitesse * math.cos (angle)
y + = vitesse * math.sin (angle)
Si vous utilisez une fréquence d'images variable, vous devez également multiplier par le temps delta.
la source