2010-12-13 84 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軸被「翻轉」的原因。