XNAメモ – 角度から向きを得る方法

Posted: 2012年2月2日 カテゴリー: プログラミングメモ, XNA, XNAメモ
タグ:, , , , , , ,

今回は、角度から2Dベクトルの向きを得る方法をメモります。

実装方法は幾つかありますが、今回は行列を使った実装方法を載せます。まず、上の方を向いている2次元ベクトルを作ります。この場合、上はマイナスにy方向を向いています(画面一番上が0, 一番下がウィンドウサイズなので、上に移動するには、yをマイナスするのと同じです)。

Vector2 upVector = new Vector2(0.0f,  -1.0f);

次は、ベクトルを回転させるための行列を作ります。回転量は、向きを探すための角度を渡します。

float angle = player.Angle;
Matrix rotation = Matrix.CreateRotationZ(angle);

最後に、回転用の行列を使い、上に向いているベクトルを回転させます。これを実行するにはVector2.Transform()メソッドを使用し、ベクトルをトランスフォームさせます。

Vector2 direction = Vector2.Transform(upVector, rotation);

// おまけで移動処理
player.Position += direction * speed * delta;

これで、角度を2次元ベクトルの向きに変換できました。後はこれを使って移動なり何なりするだけです。

コメント
  1. […] XNAメモ – 角度から向きを得る方法 […]

  2. […] 次に、1個のパーティクルを表すクラスを作ります。このクラスはParticleEmitterクラス内で宣言し、ParticleEmitterクラスと、継承したクラスだけが使う使用にしています。コンストラクタ内では、前に紹介した角度から向きを計算する方法を使用し、Vector2の向きを獲得しています。 […]

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中