从矢量方向获得正确的旋转

Ban*_*ble 2 c# xna vector

我目前在我的游戏中有这个代码:

Vector2 pixelpos = new Vector2(x, y);
Vector2 center = new Vector2(t.Width / 2, t.Height / 2);

Vector2 pixelposWorld = (pixelpos - center);

float rotation = (float)Math.Atan2(pixelposWorld.Y, pixelposWorld.X);
float rotationPercent = (MathHelper.ToDegrees(rotation) / 360);
Run Code Online (Sandbox Code Playgroud)

我的目标是最终使 rotationPercent 成为 0.0 到 1.0 之间的值,0 度为 0.0,180 为 0.5,360 为 1.0。

目前,rotationPercent 仅作为 1.0 出现。

我能做些什么来解决这个问题?

Mar*_*ing 5

首先,在您的情况下,无需将其转换为度数,因为 Math.aTan2 以弧度为单位返回角度,只需将旋转变量除以 (2*Pi)。

其次,检查你在“t.Width / 2, t.Height / 2”上做什么,因为你没有在你的问题中指定't'是什么,确保它的成员不是整数。

现在就您的问题本身而言,没有提供足够的信息。这在哪里包含您的轮换信息?“pixelpos”向量是您的世界空间位置,还是您也将其用作旋转?

回到最低限度,以下代码的工作方式与您描述的大致相同?

Vector2 pixelpos = new Vector2(0, 1);
float rotation = (float)(Math.Atan2(pixelpos.Y, pixelpos.X) / (2 * Math.PI));
Run Code Online (Sandbox Code Playgroud)

结果为 0.25 或 90 度。