Ted*_*Ted 3 c# xna textures rotation
我一直在使用旋转Texture2D精灵.我一直在使用:
float circle = MathHelper.Pi*2;
RotationAngle = RotationAngle%circle;
和
ScreenManager.SpriteBatch.Draw(car,screenpos,null,Color.White,RotationAngle,car_origin,1.0f,SpriteEffects.None,0f);
在大多数情况下处理我的测试纹理"汽车"的旋转.看起来Pi*2的旋转角度是0到-6.283185或0到6.283185之间的值,具体取决于方向.现在我想要做的是将纹理沿某个方向(比如纹理是一个箭头)朝一个位置(一个vector2,如当前鼠标位置)旋转.我不太清楚如何根据vector2位置修改这个旋转角度.
传递给它时不需要包装角度SpriteBatch.Draw.但是如果你因某种原因想要包装角度,最好使用MathHelper.WrapAngle(MSDN).
现在说你有一个Vector2代表方向和距离的东西(例如,如果你这样做的话mousePos - carPos,代表从汽车到光标的方向和距离).而你想要采取这个方向并将其转换为一个角度.使用像这样的扩展方法:
public static float Angle(this Vector2 v)
{
return (float)Math.Atan2(v.Y, v.X);
}
Run Code Online (Sandbox Code Playgroud)
所以,为了获得你的角度你会做一些事情:(mousePos - carPos).Angle().
有关更多详细信息,请参阅文档Atan2.