c# - 从矢量方向获得适当的旋转

标签 c# vector xna

我的游戏中目前有以下代码:

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);

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

目前,rotationPercent 仅显示为 1.0。

我可以做什么来解决这个问题?

最佳答案

首先,在您的情况下,无需将其转换为度数,因为 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));

结果为 0.25 或 90 度。

关于c# - 从矢量方向获得适当的旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8200021/

相关文章:

C++ 程序输出一个非常大的数字而不是对象

C# 编译器行为问题?

C# byte[] 子串? (设计)

不同通用类型的 C++ 数组

arrays - 求数组中除0之外的最小值

c# - XNA 中让玩家在屏幕上流畅绘画的最佳方法是什么?

c# - IAsyncResult 的属性isCompleted 是如何更新的?

c# - Umbraco:使用版本控制?测试/生产?

c# - 物理引擎的计算顺序和迭代

c# - 具有动态特性的游戏引擎设计