Korzystam z bardzo podstawowej formuły, aby obliczyć, pod jakim kątem mój duszek (na przykład statek kosmiczny) powinien być skierowany, w oparciu o drążek kontrolera Xbox, tzn. Za pomocą drążka obracasz statek.
W mojej głównej metodzie aktualizacji:
shuttleAngle = (float) Math.Atan2(newGamePadState.ThumbSticks.Right.X, newGamePadState.ThumbSticks.Right.Y);
W mojej głównej metodzie losowania:
spriteBatch.Draw(shuttle, shuttleCoords, sourceRectangle, Color.White, shuttleAngle, origin, 1.0f, SpriteEffects.None, 1);
Jak widać, jest to dość proste: biorę bieżące radiany z pinezki i przechowuję je w pływaku, shuttleAngle
a następnie używam tego jako argumentu kąta obrotu (w radianach) do rysowania wahadłowca.
Z jakiegoś powodu, gdy obracam sprint, wydaje się lepki przy kątach 0, 90, 180 i 270 stopni. Chce osiedlić się pod tymi kątami. Nie zapewnia mi to płynnej i naturalnej rotacji, jaką czułbym w grze, która używa podobnej mechaniki. PS: Mój kontroler Xbox jest w porządku!
shuttleAngle
aby zobaczyć, czy to trzyma się pod tymi kątami