2010-12-13 14 views
2

私は小さな2Dゲームを書くことによってXNAを学ぼうとしていますが、これはトップダウンのパースペクティブです。左に移動し、上下左右のキーを使って軸に沿って移動し、マウスカーソルを右に見て、プレイヤーが同時に走り、照準を合わせることができるようにする。ベクトルの数学、角度を見つける

私はプレイヤーの位置(m_PlayerPos)とマウスの位置(m_MousePos)のベクトルを1つ持っており、マウスの位置に正しい角度を得ようとしています。

 
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

答えて

2

を使用してください。

0

(0.0, -1.0)と掛け合わせます(または、Y成分に-1.0を掛けるだけです)。これは、ベクトルを水平軸に沿ってミラーリングし、必要な結果を得るはずです。

0

スクリーンスペースでは、原点は左上隅にあり、Y軸は下を指していますが、真円の空間ではY軸が上を指しています。そのため、Y軸が「反転」していることがわかります。