Pour répondre à votre première question, 0 degré de points vers le haut, 90 degrés vers la droite, 180 degrés vers le bas et 270 degrés vers la gauche. Here est un simple tutoriel de rotation 2D XNA pour vous donner plus d'informations.
En ce qui concerne la conversion des vecteurs à des angles et le dos, j'ai trouvé quelques bonnes implémentations here:
Vector2 AngleToVector(float angle)
{
return new Vector2((float)Math.Cos(angle), (float)Math.Sin(angle));
}
float VectorToAngle(Vector2 vector)
{
return (float)Math.Atan2(vector.Y, vector.X);
}
Aussi, si vous êtes nouveau à la programmation 2D, vous pouvez regarder dans Torque X 2D, qui fournit une beaucoup de ceci pour vous. Si vous avez payé pour développer pour XNA vous obtenez les binaires du moteur gratuitement, et il y a une classe d'utilité qui convertit des angles aux vecteurs et retour, ainsi que d'autres fonctions utiles comme celle-ci.
Editer: Comme Ranieri l'a souligné dans les commentaires, cette fonction n'a pas de sens quand up est 0 degrés. Voilà qui fait (up est (0, -1), est à droite (1, 0), vers le bas est (0, 1), gauche (-1, 0):
Vector2 AngleToVector(float angle)
{
return new Vector2((float)Math.Sin(angle), -(float)Math.Cos(angle));
}
float VectorToAngle(Vector2 vector)
{
return (float)Math.Atan2(vector.X, -vector.Y);
}
Je voudrais également pour noter que j'utilise Torque depuis un moment, et qu'il utilise 0 degrés pour le haut, donc c'est là que j'ai obtenu cette partie: dans ce cas, dessiner la texture à l'écran de la même manière que dans le fichier. donc, vers le bas établiraient la texture à l'envers.
Quelque chose ne va pas. Vous dites 0 degrés de haut, mais votre fonction renvoie (1,0), ce qui est exact dans la plupart des systèmes de coordonnées que j'ai vu, pour 0 degrés. – drxzcl
Bonne prise, merci! – Venesectrix