Sprite'ımın (örneğin uzay gemisinin) Xbox denetleyicisi başparmak çubuğuna dayanarak hangi açıyla karşılaşması gerektiğini hesaplamak için çok temel bir formül kullanıyorum, yani gemiyi döndürmek için başparmak çubuğunu kullanıyorsunuz.
Ana güncelleme yöntemimde:
shuttleAngle = (float) Math.Atan2(newGamePadState.ThumbSticks.Right.X, newGamePadState.ThumbSticks.Right.Y);
Ana çizim yöntemimde:
spriteBatch.Draw(shuttle, shuttleCoords, sourceRectangle, Color.White, shuttleAngle, origin, 1.0f, SpriteEffects.None, 1);
Gördüğünüz gibi oldukça basit, mevcut radyanları başparmak çubuğundan alıp bir şamandıra içinde saklıyorum shuttleAngle
ve daha sonra mekiği çizmek için dönüş açısı (radyan olarak) argümanı olarak kullanıyorum.
Nedense sprint'i döndürdüğümde 0, 90, 180 ve 270 derece açılarda yapışkan hissediyor. Bu açılara yerleşmek istiyor. Benzer bir mekaniği kullanan bir oyunda hissettiğim gibi pürüzsüz ve doğal bir rotasyon vermiyor. Not: Xbox oyun kumandalarım iyi!
shuttleAngle
görmek eğer o açıda olduğu sopalarla