【问题标题】:Vector math, finding the angle矢量数学,找到角度
【发布时间】:2011-05-24 14:57:49
【问题描述】:

我正在尝试通过编写一个小型 2D 游戏来学习 XNA,这是一个自上而下的视角,我试图进行双重移动,使用左右键和上下键沿轴移动,以及向右看鼠标光标,让玩家可以同时奔跑和瞄准。

我有一个用于玩家位置 (m_PlayerPos) 的向量和一个用于鼠标位置 (m_MousePos) 的向量,我正在尝试获取指向鼠标位置的正确角度。

我用的是公式法:

公共静态浮点角度(Vector2 从,Vector2 到) { return (float)Math.Atan2(from.X - to.X, from.Y - to.Y); }

这行得通,但由于某种原因,该方法只能在沿 x 轴的中途工作。当鼠标在玩家的右边时,玩家会看向鼠标的右边。

但是如果我移动到播放器的顶部,它会向下看,如果鼠标在播放器下方,播放器会向上看。所以我需要反转 Y 轴,但我不确定如何。

提前感谢您的任何反馈。

【问题讨论】:

  • 你应该注意 Math.Atan2 期望 y 然后 x,所以你的论点被交换了

标签: vector xna rotation


【解决方案1】:

使用to.Y - from.Y

【讨论】:

    【解决方案2】:

    将它与(0.0, -1.0) 相乘(或将Y 分量乘以-1.0)。这将沿水平轴镜像矢量,并应达到您想要的结果。

    【讨论】:

      【解决方案3】:

      在屏幕空间中,原点位于左上角,Y 轴指向下方,而在欧几里德空间中,Y 轴指向上方。这就是你观察到 Y 轴被“翻转”的原因。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-12-14
        • 1970-01-01
        • 1970-01-01
        • 2015-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多