2011-08-12 10 views
0

さて、私は小さなタンクゲームを作っています。私は自分のタンクに弾丸を撃つようにしなければなりません。タンクは動くことができます。今私の問題は、どのようにして弾丸が砲身から抜け出し、角度と位置が良いように見えるようにするのだろうか?私は困惑しています。イメージを前方に移動しますが、ローテーションと同期させますか?

+0

XNAを使用していますか? – RandomEngy

+0

タンクの位置やタンクのトレッドとタンクタレットの回転を管理する方法を示すコードを投稿しますか? –

+0

これは2Dまたは3Dですか?彼らはあなたが学校でゴニオメーターを教えたときに注意を払ったのですか? –

答えて

2

最も簡単な解決策は、タンクの銃身/中央の最初から弾丸を開始し、銃身とタンクの後ろに並べて、銃身が指しているのと同じ方向に発射することです。特別な回転は必要ありませんが、タンクの後ろから弾丸が現れるまで少し時間がかかります。

または、数学を行います。ホットスポットを置くか、バレルの始まりの座標を記録し、バレルを回転させるときに、このポイントを回転させます。これはあなたの弾丸をスポーンする新しいポイントになります。

2

DirectXやOpenGLなどの3D APIには、「モデルスペース」と「ワールドスペース」という概念があります。 Model Spaceは、世界のどこにあるかにかかわらず、単一のモデルに関連して表現された座標のセットであり、World Spaceは世界全体に関連する一連の座標です。モデル空間から座標を取得して個々のモデルに意味を持ち、それをWorld Spaceに変換するには、ワールド・マトリックスと呼ばれるマトリックスを介して座標を乗算し、これは世界のモデルの各インスタンスに固有のものです。

だから、基本的には:

{X、Yは、モデル空間の座標} * {モデルインスタンスのワールド行列} = {X、Yは世界空間の座標}

あなたは2Dにこれと同じアプローチを適用する必要がありますゲーム。あなたのタンクスプライトのバレルの終わりは、タンクの画像の同じX、Y座標に常にあります。しかし、あなたの戦車の画像は、スクリーンに表示されているときにある変形を受けています(ある点の周りの回転)。あなたは基本的に、タンクイメージ上のバレルの終わりのX、Y座標を取って、それに同じ変換を適用する必要があります。そして、バレルの終わりのX、Y座標を与えます現在画面に表示されています。

そこから、発射後に発射体がどの角度に向かうべきかを決定するために、タンクの回転角を取る。

関連する問題