2010-12-13 56 views
2

我试图通过编写一个小的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); 
} 

这工作,但由于某种原因该方法只适用中途,沿x轴。当鼠标位于玩家右侧的正确左侧时,玩家将看到鼠标右侧。

但是,如果我移动到播放器的顶端,它会向下看,如果鼠标在播放器下方,播放器会抬起头来。所以我需要反转Y轴,但我不知道如何。

先感谢您的任何反馈。

+0

你应该注意到Math.Atan2期望y然后x,所以你的参数被交换 – freespace 2010-12-13 11:43:30

回答

2

使用。

0

乘法它与(0.0, -1.0)(或只是由-1.0乘以Y分量)。这将沿着横轴镜像矢量,并且应该达到你想要的结果。

0

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