J'utilise une formule très basique pour calculer l'angle de mon sprite (vaisseau spatial par exemple) en fonction de la manette de la manette Xbox, c'est-à-dire que vous utilisez la manette pour faire pivoter le vaisseau.
Dans ma principale méthode de mise à jour:
shuttleAngle = (float) Math.Atan2(newGamePadState.ThumbSticks.Right.X, newGamePadState.ThumbSticks.Right.Y);
Dans ma méthode de tirage principal:
spriteBatch.Draw(shuttle, shuttleCoords, sourceRectangle, Color.White, shuttleAngle, origin, 1.0f, SpriteEffects.None, 1);
Comme vous pouvez le voir, c'est assez simple, je prends les radians actuels de la manette et les stocke dans un flotteur shuttleAngle, puis je les utilise comme argument d'angle de rotation (en radians) pour dessiner la navette.
Pour une raison quelconque, lorsque je tourne le sprint, il semble collant à des angles de 0, 90, 180 et 270 degrés. Il veut s'installer à ces angles. Cela ne me donne pas une rotation douce et naturelle comme je le ferais dans un jeu qui utilise un mécanisme similaire. PS: Ma manette Xbox va bien!
shuttleAnglepour voir si cela colle à ces angles