Sto usando una formula molto semplice per calcolare l'angolazione che la mia sprite (ad esempio un'astronave) dovrebbe essere orientata in base alla levetta del controller Xbox, ovvero usare la levetta per ruotare la nave.
Nel mio metodo di aggiornamento principale:
shuttleAngle = (float) Math.Atan2(newGamePadState.ThumbSticks.Right.X, newGamePadState.ThumbSticks.Right.Y);
Nel mio metodo di disegno principale:
spriteBatch.Draw(shuttle, shuttleCoords, sourceRectangle, Color.White, shuttleAngle, origin, 1.0f, SpriteEffects.None, 1);
Come puoi vedere è abbastanza semplice, prendo i radianti correnti dalla levetta e li memorizzo in un float shuttleAngle
e quindi li utilizzo come argomento dell'angolo di rotazione (in radianti) per disegnare la navetta.
Per qualche ragione quando ruoto lo sprint mi sembra appiccicoso ad angoli di 0, 90, 180 e 270 gradi. Vuole stabilirsi in quegli angoli. Non mi sta dando una rotazione regolare e naturale come mi sentirei in un gioco che usa una meccanica simile. PS: il mio controller Xbox va bene!
shuttleAngle
per vedere se si attacca a quegli angoli