4

私は小さなゲームを作成しており、船からターゲットに向かって発射されている光子魚雷を持っています。現在、魚雷の速度が遅いため、移動中のターゲットに船が命中することはありません。これを修正したいと考えています。私は複数の理論を作成し、これを達成するための最良の方法を見つけるために多くの数学的なものを計画し、最終的に次のことを推測しました:

  1. リスト項目
  2. 光子魚雷が目標に到達するまでの時間を求めます。
  3. 魚雷が到着するまでに、目標がどれだけ移動したかを調べます。
  4. 次に、ターゲットの新しい位置と元の船の間の距離を見つけます。
  5. これにより、コサイン ルール (SSS) を使用して、命中率を大幅に高めるために弾丸を発射する必要がある弾道を見つける機会が得られます。

ここにダイグラムがあります:

私の問題の図

デフォルトではラインcに平行であるため、ラインaを正しい方向に回転させる必要がある唯一の問題は、方程式全体を台無しにします。誰でもこれを手伝ってもらえますか?また、新しい位置の提案を見つけるためのより良い方法を考えることができれば、大歓迎です:)

4

1 に答える 1

2

ゲームは2Dのようです。ここで、すべてのワールド座標を取得します。

Target Position: {xt, yt}
Target Velocity: {vxt, vyt}
Ship Position:   {xs, ys}

{bx, by}さて、方向ベクトルまたは単位ベクトルである方向に弾丸を打つとしましょう。弾丸には速度がありsbます。したがって、t'弾丸とターゲットの時間空間座標は次のようになります。

Target New Position: {xt + vxt*t', yt + vyt*t'}
Bullet New Position: {xs + bx*sb*t', ys + by*sb*t'} ( bullet starts from ship)

この時点では、弾丸とターゲットの両方が 1 つの場所にある必要があるため、弾丸がターゲットに当たったと言えます。したがって、新しいターゲット位置を新しい弾丸の位置 (時間 t' の後) と等しくなるように置き換えることができます。

xt + vxt*t' = xs + bx*sb*t'
yt + vyt*t' = ys + by*sb*t'

先ほど言ったように、bxbyは方向ベクトルなので、bx^2 + by^2 = 1

(xt + vxt*t' - xs)/(sb*t') = bx
(yt + vyt*t' - ys)/(sb*t') = by
bx^2 + by^2 = 1

したがって、それらを 2 乗して加算すると、次のようになります。

(yt + vyt*t' - ys)^2 + (xt + vxt*t' - xs)^2 = (sb*t')^2

これは 1 つの変数を持つ 2 次方程式です。t'これを解くと、 と が得られbxますby

于 2013-02-05T19:53:02.123 に答える