gpt4 book ai didi

c# - 在 C# 中将 2D 图像旋转到一个点

转载 作者:行者123 更新时间:2023-11-30 15:07:27 29 4
gpt4 key购买 nike

我一直在使用旋转的 Texture2D Sprite 。我一直在使用:

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,则表示方向和汽车到光标的距离)。并且您想采用该方向并将其转换为角度。使用 extension method像这样:

public static float Angle(this Vector2 v)
{
return (float)Math.Atan2(v.Y, v.X);
}

因此,为了获得您的角度,您可以执行以下操作:(mousePos - carPos).Angle()

参见 documentation for Atan2了解更多详情。

关于c# - 在 C# 中将 2D 图像旋转到一个点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6560934/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com