Estou usando uma fórmula muito básica para calcular qual ângulo meu sprite (nave espacial, por exemplo) deve estar enfrentando com base no polegar do controlador Xbox, ou seja, você usa o polegar para girar a nave.
No meu principal método de atualização:
shuttleAngle = (float) Math.Atan2(newGamePadState.ThumbSticks.Right.X, newGamePadState.ThumbSticks.Right.Y);
No meu método principal de desenho:
spriteBatch.Draw(shuttle, shuttleCoords, sourceRectangle, Color.White, shuttleAngle, origin, 1.0f, SpriteEffects.None, 1);
Como você pode ver, é bastante simples, pego os radianos atuais do manípulo e os guardo em um flutuador shuttleAngle
e depois o uso como argumento do ângulo de rotação (em radianos) para desenhar o ônibus espacial.
Por alguma razão, quando eu giro o sprint, ele fica pegajoso nos ângulos de 0, 90, 180 e 270 graus. Ele quer se estabelecer nesses ângulos. Não está me dando uma rotação suave e natural como eu me sentiria em um jogo que usa um mecânico semelhante. PS: Meu controle Xbox está bem!
shuttleAngle
para ver se isso varas nesses ângulos