Я використовую дуже основну формулу, щоб обчислити, під яким кутом повинен бути спрайт (наприклад, космічний корабель), заснований на мініатюрній контрольній панелі контролера 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
щоб побачити, чи стикається це під тими кутами