Tôi đang sử dụng một công thức rất cơ bản để tính toán góc mà sprite của tôi (ví dụ tàu vũ trụ) sẽ phải đối mặt dựa trên ngón tay cái của bộ điều khiển Xbox, tức là bạn sử dụng ngón tay cái để xoay tàu.
Trong phương pháp cập nhật chính của tôi:
shuttleAngle = (float) Math.Atan2(newGamePadState.ThumbSticks.Right.X, newGamePadState.ThumbSticks.Right.Y);
Trong phương pháp vẽ chính của tôi:
spriteBatch.Draw(shuttle, shuttleCoords, sourceRectangle, Color.White, shuttleAngle, origin, 1.0f, SpriteEffects.None, 1);
Như bạn có thể thấy nó khá đơn giản, tôi lấy radian hiện tại từ ngón tay cái và cất nó trong một cái phao shuttleAngle
và sau đó sử dụng nó làm đối số góc quay (tính bằng radian) để vẽ con thoi.
Vì một số lý do khi tôi xoay nước rút, nó cảm thấy dính ở các góc 0, 90, 180 và 270 độ. Nó muốn giải quyết ở những góc độ. Nó không mang lại cho tôi một vòng quay mượt mà và tự nhiên như tôi cảm thấy trong một trò chơi sử dụng một cơ chế tương tự. PS: Bộ điều khiển Xbox của tôi vẫn ổn!
shuttleAngle
để xem liệu đó có dính ở các góc đó không