Я использую очень простую формулу, чтобы вычислить угол, на который должен быть направлен мой спрайт (например, космический корабль), на основе большого пальца контроллера Xbox, т.е. вы используете этот большой палец для вращения корабля.
В моем основном методе обновления:
shuttleAngle = (float) Math.Atan2(newGamePadState.ThumbSticks.Right.X, newGamePadState.ThumbSticks.Right.Y);
В моем основном методе розыгрыша:
spriteBatch.Draw(shuttle, shuttleCoords, sourceRectangle, Color.White, shuttleAngle, origin, 1.0f, SpriteEffects.None, 1);
Как вы можете видеть, это довольно просто, я беру текущие радианы из большого пальца и сохраняю их в плавающей точке, shuttleAngle
а затем использую это как аргумент угла поворота (в радианах) для рисования шаттла.
По какой-то причине, когда я поворачиваю спринт, он чувствует себя липким под углами 0, 90, 180 и 270 градусов. Он хочет обосноваться под этими углами. Это не дает мне плавного и естественного вращения, как я чувствовал бы в игре, которая использует подобную механику. PS: мой контроллер Xbox в порядке!
shuttleAngle
чтобы увидеть, придерживается ли он этих углов