簡體   English   中英

向 C# 中的點旋轉 2D 圖像

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM