射撃前の軌道周りのミサイル軌道の計算


10

Unity3Dでゲームを構築しています。それは重力戦争のクローンです。プレイヤーとAIの両方のタレットは、ミサイルを互いに撃ち(角度とパワー変数を与える)、惑星のミサイルを衝突させないようにします。しかし、これが私の質問です:AIにミサイルを発射する前に、惑星の重力も考慮して、パワーと角度をどのように計算させるのですか?

回答:


5

複数のボディを持つこのようなシステムは、無秩序になります。方程式をリアルタイムで解くことができるとは思いません。期待できる最善の方法は、遺伝的アルゴリズムを使用して解決策を見つけることです。

1:ランダムなソリューション(角度、累乗のペア)の数(たとえば100)を生成します。

2:これらのソリューションをシミュレートします。

3:これらのいずれかである場合、ターゲットに到達する(または十分に接近する)ことになります。それ以外の場合は続行します。

4:最良の10のソリューションを選択します(最終的にターゲットに最も近いもの)

5:これらの10のソリューションから、角度とパワーをランダムに調整して、それぞれに10の子を作成します。

6:これで100の新しいソリューションがあり、ステップ2に戻りました

解決策が見つからない場合、または検索に時間がかかりすぎる場合は、反復回数を制限する必要があります。

このアプローチでも、適切なソリューションが見つかるとは限りません。1.ソリューションが存在しない可能性があります2.カオスシステムでは、ソリューションへの小さな変更が結果に大きな影響を与える可能性があります


1

描画せずにショットをシミュレートできるはずです。

次に、10ショットをシミュレートしてから、10のショットのうち最も近いものを撮影します。


0

ミサイルの軌道がAngleand の入力に基づいているPower場合、逆方程式から解く(正確な答えを得る)ことができるはずです。

基本的な(疑似)AIステップは次のとおりです。

  1. ランダムなPowerレベルを選択してください。妥当な範囲内であれば、正確な値は(ある程度)関係ありません。
  2. (実際のパスから反転した)方程式を解いて、正確な(よく、倍精度で可能な限り近い)を与えAngleます。
  3. AIのAngle難易度」を調整するために、(変更可能な)ランダムオフセットをいくつか選択します。
  4. (ランダム)Powerと(計算)で、プレイヤーと同じようにミサイルを発射しAngleます。

もちろん、両方の入力に対してAIレベルをランダムなレベルで発射することもできます。これにより、興味深い結果が得られる可能性があります...


この方法は、重力が真っ直ぐで、風が一定である場合に最適ですがAngle、宇宙全体に複数の重力体が散乱している場合、「正確な方程式」には何を使用しますか?彼らの引きはあなたの現在の位置に依存します。一部のショットは可能ではないかもしれません。
ジョンマクドナルド

@John-ショットが完全に不可能な場合(不適切な入力パワーの選択を無視する)、プレイフィールドに深刻な問題があります。これらのタイプのゲームでは、どのプレイヤーもAIに置き換えることができます。当然のことながら、方程式はより複雑になります(複数のボディがある場合は非常に速くなります)が、それでもまだ可能です。
時計じかけのミューズ

けっこうだ。しかし、あなたは方程式に何を使うのか知っていますか?それがこの質問が作成された理由だと思います。
ジョンマクドナルド

ジョンは正解です。私が探しているのはその方程式です。
Onofrio

@Onofrio-申し訳ありませんが、関連する方程式はありません...これを「正しく」行うには、多変数計算が必要なようです。
時計じかけのミューズ

0

それらを計算させるのではなく、推測から始めて適切に調整することによって、それを現実的にするのはどうですか?

私がグラビティウォーズをプレイしたとき、これは私がやったことです。セミランダムなパワーから始めて、増分に応じて調整します。数ショット以内に、あなたは本当に近づきます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.