Um Ihre erste Frage zu beantworten, 0 Grad Punkte nach oben, 90 Grad Punkte nach rechts, 180 Grad Punkte nach unten und 270 Grad Punkte nach links. Here ist ein einfaches 2D-XNA-Drehungs-Tutorial, um Ihnen mehr Informationen zu geben.
Wie für Vektoren Winkel und zurück konvertieren, fand ich ein paar gute Implementierungen 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);
}
Auch, wenn Sie auf 2D-Programmierung vertraut sind, möchten Sie vielleicht in Torque X 2D suchen, die eine bietet Viel davon für dich. Wenn Sie dafür bezahlt haben, für XNA zu entwickeln, erhalten Sie die Engine-Binaries kostenlos, und es gibt eine Utility-Klasse, die aus Winkeln in Vektoren und zurück konvertiert, sowie andere nützliche Funktionen wie diese.
Bearbeiten: Wie Ranieri in den Kommentaren darauf hingewiesen, macht diese Funktion keinen Sinn, wenn auf 0 Grad ist. Hier ist eine, die funktioniert (bis (0, -1), rechts (1, 0), unten (0, 1), links (-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);
}
Ich mag auch Ich merke, dass ich Torque schon seit einiger Zeit benutze und es 0 Grad für Up benutzt, also habe ich diesen Part. In diesem Fall, zeichne die Textur auf die gleiche Weise auf den Bildschirm wie sie ist die Datei. würde also nach unten, um die Textur Zeichnung den Kopf.
Etwas ist aus. Sie sagen 0 Grad Punkte nach oben, aber Ihre Funktion gibt (1,0), das ist in den meisten Koordinatensystemen, die ich gesehen habe, für 0 Grad zurück. – drxzcl
Guter Fang, danke! – Venesectrix