Ich verwende eine sehr einfache Formel, um anhand des Daumensticks des Xbox-Controllers zu berechnen, in welchen Winkel mein Sprite (z. B. Raumschiff) zeigen soll, dh Sie verwenden den Daumenstift, um das Schiff zu drehen.
In meiner Hauptaktualisierungsmethode:
shuttleAngle = (float) Math.Atan2(newGamePadState.ThumbSticks.Right.X, newGamePadState.ThumbSticks.Right.Y);
In meiner Hauptzeichnungsmethode:
spriteBatch.Draw(shuttle, shuttleCoords, sourceRectangle, Color.White, shuttleAngle, origin, 1.0f, SpriteEffects.None, 1);
Wie Sie sehen, ist es ganz einfach. Ich nehme das aktuelle Bogenmaß vom Daumenstiel, speichere es in einem Schwimmer shuttleAngle
und verwende es dann als Drehwinkelargument (im Bogenmaß) zum Zeichnen des Shuttles.
Wenn ich den Sprint drehe, fühlt er sich aus irgendeinem Grund bei Winkeln von 0, 90, 180 und 270 Grad klebrig an. Es will sich in diesen Winkeln niederlassen. Es gibt mir keine sanfte und natürliche Rotation, wie ich sie in einem Spiel mit einer ähnlichen Mechanik fühlen würde. PS: Mein Xbox-Controller ist in Ordnung!
shuttleAngle
zu sehen, ob dieser in diesen Winkeln bleibt