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!
shuttleAngle
pour voir si cela colle à ces angles