矢量数学,找到角度

时间:2010-12-13 11:30:23

标签: vector xna rotation

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

我有一个用于玩家位置的矢量(m_PlayerPos)和一个用于鼠标位置的矢量(m_MousePos),并且我试图获得朝向鼠标位置的正确角度。

我使用公式方法:

public static float Angle(Vector2 from, Vector2 to)
{
    return (float)Math.Atan2(from.X - to.X, from.Y - to.Y);
}

这样可行,但由于某种原因,该方法仅沿x轴工作一半。当鼠标位于播放器右侧的左侧时,播放器会向右看鼠标。

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

提前感谢您的任何反馈。

3 个答案:

答案 0 :(得分:2)

使用to.Y - from.Y

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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