mon objet à l'écran a une rotation var (en degrés).Comment faire un mouvement vectoriel 2d
Comment puis-je le réparer alors quand je pousse la flèche vers le haut, il se déplace vers l'avant et pas seulement x ++ et y ++?
mon objet à l'écran a une rotation var (en degrés).Comment faire un mouvement vectoriel 2d
Comment puis-je le réparer alors quand je pousse la flèche vers le haut, il se déplace vers l'avant et pas seulement x ++ et y ++?
x += sin(rotation) * speed;
y += cos(rotation) * speed;
Mais cela dépend de l'orientation de votre rotation. Ce code fonctionnera pour la rotation orientée vers le haut (nord) à 0 degré, en se déplaçant dans le sens des aiguilles d'une montre.
0 degrés pour le nord n'est pas standard. En mathématiques, 0 degrés est toujours à droite, en augmentant dans le sens inverse des aiguilles d'une montre. –
C'est une question de goût. – Pindatjuh
Utiliser la trigonométrie. Vous avez l'angle et la longueur du mouvement (qui est votre hypoténuse) donc vous devriez être capable d'utiliser sin ou cos pour calculer la quantité de mouvement x et y nécessaire.
pas à 100% sûr que ce soit ce que vous voulez, mais je pense que vous voulez faire:
x += speed * cos(angle);
y += speed * sin(angle);
Où angle
est la rotation de votre objet, et x
et y
sont ses coordonnées. speed
est la vitesse de votre objet.
Juste pour préciser, puisque c'est C#, vous voulez faire ce
double radians = (Math.PI/180)*angleInDegrees;
x += speed * Math.Cos(radians);
y += speed * Math.Sin(radians);
Comme d'autres l'ont mentionné, cela est basé sur l'utilisation de la trigonométrie pour appliquer une rotation à un vecteur de vitesse (dans ce cas, le vecteur 0 degrés pointe vers la droite).
Je vous suggère de clarifier votre question, car ce n'est pas clair du tout de ce que vous parlez. – Will
Il a un objet qui fait face à n'importe quelle direction (en degrés) et il veut faire avancer l'objet dans la direction vers laquelle il est orienté. En ce moment, il a les touches de mouvement juste pour ajouter et soustraire de x et y – Pyrolistical
@pyro C'est ce que je pensais, mais je n'étais pas assez sûr pour éditer sa question ... – Will