J'ai un vaisseau spatial qui a un emplacement, une destination et une rotation. Quand il a une nouvelle destination, il avance tout en tournant dans le sens des aiguilles d'une montre jusqu'à ce qu'il soit face à sa destination.C# Vecteurs, angles et rotation
code:
public void Move()
{
Vector requiredDirection = destination - origin;
requiredDirection.Normalize();
Vector directionNow = new Vector((float)Math.Cos(rotation), (float)Math.Sin(rotation));
float x = Math.Abs(requiredDirection.X - directionNow.X);
float y = Math.Abs(requiredDirection.Y - directionNow.Y);
if ((x > rotationSpeed) || (y > rotationSpeed))
{
rotation += rotationSpeed;
}
shipPosition += directionNow * speed;
}
Mon problème est que le navire ne tourne dans le une direction jusqu'à ce qu'il soit face à son objectif, j'ai besoin de tourner dans le sens qui serait le plus court chemin. Je ne sais vraiment pas par où commencer, c'est ma première vraie tentative à Vecteurs.
Merci Mark, je viens d'essayer et ça marche. Cependant, lors de la définition de certaines destinations, le vaisseau va alterner entre la gauche et la droite, en faisant un mouvement décalé loin de la destination, sans doute un bug dans mon code quelque part que j'espère pouvoir corriger. Indépendamment de cela, votre code fonctionne très bien. – Mitch