C# 向C中的某个点旋转2D图像#

C# 向C中的某个点旋转2D图像#,c#,xna,rotation,textures,C#,Xna,Rotation,Textures,我一直在使用旋转纹理2D精灵。我一直在使用: 浮动圆=MathHelper.Pi*2 RotationAngle=RotationAngle%圆 及 ScreenManager.SpriteBatch.Draw(car、screenpos、null、彩色、白色、旋转角度、car_原点、1.0f、SpriteBatch.None、0f) 对于大部分处理我的测试纹理“车”旋转。Pi*2的旋转角度似乎是介于0和-6.283185之间的值,或者介于0和6.283185之间的值,具体取决于方向。现在,我想

我一直在使用旋转纹理2D精灵。我一直在使用:

浮动圆=MathHelper.Pi*2
RotationAngle=RotationAngle%圆

ScreenManager.SpriteBatch.Draw(car、screenpos、null、彩色、白色、旋转角度、car_原点、1.0f、SpriteBatch.None、0f)


对于大部分处理我的测试纹理“车”旋转。Pi*2的旋转角度似乎是介于0和-6.283185之间的值,或者介于0和6.283185之间的值,具体取决于方向。现在,我想做的是在某个方向(比如说纹理是一个箭头)向某个位置(矢量2,比如当前鼠标位置)旋转纹理。我不太确定如何根据矢量2位置修改此旋转角度。

将角度传递给
SpriteBatch.Draw时,不需要包裹角度。但是,如果出于某种原因确实希望包装角度,最好使用
MathHelper.WrapAngle
()

现在假设您有一个表示方向和距离的
Vector2
(例如,如果您有
mousePos-carPos
,则表示从汽车到光标的方向和距离)。你想沿着这个方向,把它转换成一个角度。使用一个类似这样的:

public static float Angle(this Vector2 v)
{
    return (float)Math.Atan2(v.Y, v.X);
}
所以,要获得你的角度,你可以做如下操作:
(mousePos-carPos).angle()


有关详细信息,请参阅。

先生,您是个天才。我刚试过,效果很好,谢谢!