[英]Rotating a 2D Image Towards a Point in C#
我一直在使用旋轉 Texture2D 精靈。 我一直在使用:
浮點數 = MathHelper.Pi * 2;
RotationAngle = RotationAngle % 圓;
和
ScreenManager.SpriteBatch.Draw(汽車, screenpos, null, Color.White, RotationAngle, car_origin, 1.0f, SpriteEffects.None, 0f);
在大多數情況下處理我的測試紋理“汽車”的旋轉。 Pi*2 的旋轉角度似乎是介於 0 和 -6.283185 或 0 和 6.283185 之間的值,具體取決於方向。 現在我想做的是沿某個方向(比如紋理是箭頭)將紋理旋轉到某個位置(vector2,例如當前鼠標位置)。 我不太清楚如何 go 關於我需要如何根據矢量 position 修改這個旋轉角度。
將角度傳遞給SpriteBatch.Draw
時不需要換行。 但如果您出於某種原因確實想換一個角度,最好使用MathHelper.WrapAngle
( MSDN )。
現在假設您有一個表示方向和距離的Vector2
(例如,如果您mousePos - carPos
來表示從汽車到光標的方向和距離)。 並且您想采用該方向並將其轉換為角度。 使用像這樣的擴展方法:
public static float Angle(this Vector2 v)
{
return (float)Math.Atan2(v.Y, v.X);
}
因此,要獲得您的角度,您可以執行以下操作: (mousePos - carPos).Angle()
。
有關詳細信息,請參閱Atan2
的文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.