Wie finde ich die rotation transformiert 2D-Koordinaten in XNA?
Mache ich ein XNA-Spiel und haben Sie in ein kleines problem, herauszufinden, ein bißchen Vektor-Mathematik.
Habe ich eine Klasse repräsentiert ein 2D-Objekt mit X-und Y-integer-Koordinaten und Rotation float. Was ich brauche ist ein Vector2 Eigenschaft für die Position, die setzt X und Y als Vector2 umgewandelt wurde mithilfe der Rotation float. Auf diese Weise kann ich das einfach machen;
Position += new Vector2((thumbstick.X * scrollSpeed), -(thumbstick.Y * scrollSpeed));
und das Objekt bewegt sich in seine eigene Richtung nach oben, statt den Blick nach oben Richtung.
Bisher dies ist, was ich habe...ich denke, der Satz ist richtig, aber += änderungen es braucht, eine bekommen und die Antwort ist eben nicht, zu mir zu kommen, gerade jetzt,... >.>
public Vector2 Position
{
get
{
//What goes here? :S
}
set
{
X = value.X * (int)Math.Cos(this.Rotation);
Y = value.Y * (int)Math.Cos(this.Rotation);
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein, beide sind falsch.
Einen 2D-Vektor transformiert, wie diese:
wobei der Winkel im Bogenmaß, Winkel null ist entlang der positiven x-Achse und steigt im Uhrzeigersinn beim drehen um die z-Achse außerhalb der Ebene. Der Drehpunkt ist am Ende des Vektors transformiert, so vorstellen, den Vektor mit dem Ursprung bei (0,0), Ende bei (x,y) rotation durch einen Winkel von bis es wird ein Vektor mit Ursprung bei (0,0) und endet bei (x', y').
Können Sie auch die Matrix-helper-Methoden für die Erstellung einer Z-rotation matrix, dann multiplizieren Sie Ihre Vektor von diesem zu drehen. So etwas wie dieses:
Ich denke, das ist eine schlechte Idee. Halten Sie alle Ihre Objekte in X-und Y-Koordinaten in der gleichen Ebenen statt, für die jeweils um Ihre eigene Achse. Mit allen Mitteln haben eine
Position
undHeading
Eigenschaften und in Erwägung ziehen, einMove
Methode, die nimmt deinen input Vektor und hat die Mathematik auf Updates position und überschrift.