2D の XNA では、ベクトル角度が機能する標準的な方法は何ですか?
0 度が右、90 度が上、180 度が左、270 度が下 ?
の「標準」実装とは
float VectortoAngle(Vector2 vec)
と
Vector2 AngleToVector(float angle)
VectortoAngle(AngleToVector(PI)) == PI ?
最初の質問に答えるには、上を 0 度、右を 90 度、下を 180 度、左を 270 度とします。 詳細については、簡単な 2D XNAローテーションのチュートリアルをご覧ください。
ベクトルを角度に変換したり戻したりすることに関しては、ここでいくつかの優れた実装を見つけました。
Vector2 AngleToVector(float angle)
{
return new Vector2((float)Math.Cos(angle), (float)Math.Sin(angle));
}
float VectorToAngle(Vector2 vector)
{
return (float)Math.Atan2(vector.Y, vector.X);
}
また、2D プログラミングに慣れていない場合は、Torque X 2Dを調べるとよいでしょう。これは多くのことを提供してくれます。XNA の開発にお金を払った場合は、エンジン バイナリを無料で入手できます。また、角度からベクトルに変換したりその逆に変換したりするユーティリティ クラスや、このようなその他の便利な関数があります。
編集: Ranieri がコメントで指摘したように、上が 0 度の場合、その関数は意味をなしません。これは(上は(0、-1)、右は(1、0)、下は(0、1)、左は(-1、0)です:
Vector2 AngleToVector(float angle)
{
return new Vector2((float)Math.Sin(angle), -(float)Math.Cos(angle));
}
float VectorToAngle(Vector2 vector)
{
return (float)Math.Atan2(vector.X, -vector.Y);
}
また、私はしばらく Torque を使用しており、上向きに 0 度を使用しているため、その部分を取得したことにも注意したいと思います。つまり、この場合、ファイルにあるのと同じ方法でテクスチャを画面に描画します。したがって、テクスチャを上下逆に描画することになります。
XNA では、特定の角度がどの方向を表すかについての規則はありません。そのため、好きなように定義することができます。
最後にゲームでアングルを使用したのはいつだったかわかりません。ほとんどの場合、最初は少し直感的ではありませんが、ベクトルを直接操作する方が簡単です。