XNAメモ – 何かの周りをグルグル移動する方法

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

今回は、何かの周りを移動する処理の実装方法を、ビリヤードっぽいゲームのキューと玉を例にして、メモります。

今回は、前に説明した角度から向きを得る方法を使用せず、三角関数(cos, sin)を使用して実装します。

細かく説明するのは手間なので、sin,cosを使用して特定の位置の周りを移動するのは以下の画像の様な考えを使えます。

この画像内でのrは半径で、これは中心にある玉からどれ位の距離をとりたいか表します。そして、キューの位置は、画像右上のx,yと描かれている位置になります。x,yの位置は、右側に書いてある通り、以下の式で計算できます。

x = radius * cos( angle );
y = radius * sin( angle );

なので、キューを移動をしたければangle(角度)を少しずつ変化していけば、玉の周りを一周します。実装はこのようになります。

Vector2 ballPosition = …;
float radius = 40.0f;
float angle = 0.0f;
…

// 角度を足す
angle += 0.1f;

// キューの位置を玉と同じにする
Vector2 cuePosition = ballPosition;

// 玉のある位置から、半径と角度を使用してキューを移動する
cuePosition .X += radius * cos( angle );
cuePosition .Y += radius * sin( angle );

以上です。実装後は、こんな感じになります。

余談ですが、上にある動画は私が始めてXNAを使った時(と同時に始めてゲームを作った時)、に作った物です。今見ると色々と懐かしい上に、残念です(特に物理が)・・・orz

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中