1

さて、私は宇宙シムに取り組んでいます。ほとんどの宇宙シムは、弾丸が到達したときに敵の船がどこにあるか(3D位置)を計算する必要があります。弾丸が移動する速度と敵が出荷する速度からこれを計算するにはどうすればよいですか?

4

4 に答える 4

1

KurtMillerによる衝突検出
http://www.gamespp.com/algorithms/collisionDetection.html

于 2009-12-07T19:00:58.643 に答える
1

船の負の速度を弾丸に追加して、弾丸だけが動くようにします。次に、船の形状と弾丸が移動する線の交点を計算します(* pos-> pos + vel * dt *)。

于 2009-12-07T19:05:27.800 に答える
1

彼とあなた自身の間の相対速度ベクトルを計算します。これは、あなたが静止している場合、彼の動きと見なすことができます。彼の相対距離ベクトルを計算します。これで、彼はすでにD離れており、単位ごとにVを移動していることがわかります。計算するV'があり、長さはわかっていますが、方向はわかりません。

今、あなたはこれらの2つの制約、彼のVとあなたの弾丸のV'で三角形を構築しています。2次元では、次のようになります。

Dx+Vx*t = V'x*t

Dy+Vy*t = V'y*t

V'x^2 + V'y^2 = C^2

これは次のように単純化されます。

(Dx/t+Vx)^2 + (Dy/t+Vx)^2 = C^2

そして、二次方程式を使用してそれを解決することができます。この手法は、同様に3次元で適用できます。これを解決する方法は他にもありますが、これはベクトル計算ではなく単純な代数です。

于 2009-12-07T19:06:18.893 に答える
0

問題はおそらく「弾丸がそれに当たったときに船がどこにあるか」ではなく、弾丸がそれに当たった場合です。線形軌道と一定速度を想定して、2つのベクトルの交点を計算します。1つは発射体の経路を表し、もう1つは船の経路を表します。次に、元の位置から交差位置までの距離をそれぞれの速度で割ることにより、各オブジェクト(船と弾丸)がそのポイントに到達する時間を決定できます。時間が一致する場合は、衝突とそれが発生する場所があります。

より正確な衝突検出が必要な場合は、単純なBSPツリーのようなものを使用して、衝突をすばやく特定するだけでなく、衝突が発生した表面と、正しく処理された場合は衝突の正確な3D位置を特定できます。 。ただし、動的な環境でこのようなツリーを維持することは困難な場合があります。

于 2009-12-07T19:06:14.517 に答える