Vector 向量数学,求角度

Vector 向量数学,求角度,vector,xna,rotation,Vector,Xna,Rotation,我试图通过编写一个小2D游戏来学习XNA,这是一个自上而下的透视图,我试图进行双重移动,使用左右键和上下键沿轴移动,并向右看鼠标光标,以便玩家可以同时运行和瞄准 我有一个用于玩家位置的向量(m_PlayerPos),还有一个用于鼠标位置的向量(m_MousePos),我正试图获得鼠标位置的正确角度 Im使用公式法: public static float Angle(Vector2 from, Vector2 to) { return (float)Math.Atan2(from.X -

我试图通过编写一个小2D游戏来学习XNA,这是一个自上而下的透视图,我试图进行双重移动,使用左右键和上下键沿轴移动,并向右看鼠标光标,以便玩家可以同时运行和瞄准

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

Im使用公式法:

public static float Angle(Vector2 from, Vector2 to) { return (float)Math.Atan2(from.X - to.X, from.Y - to.Y); } 公共静态浮动角度(矢量2从,矢量2到) { 返回(浮点)Math.Atan2(从.X到.X,从.Y到.Y); } 这是可行的,但由于某些原因,该方法只能沿x轴工作一半。当鼠标正好位于玩家右侧的左侧时,玩家会向右看鼠标

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


提前感谢您的反馈。

使用
to.Y-from.Y
将其乘以
(0.0,-1.0)
(或者只需将Y分量乘以
-1.0
)。这将沿水平轴镜像向量,并应达到您想要的结果。

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

你应该注意数学。Atan2期望Y然后x,所以你的参数被交换