2016-10-14 9 views
2

私は2Dのサイドスクロールゲームに取り組んでいます。libGDX:サイドローラーでAIを実装する

説明:

イムlibGDXとAIの拡張機能を使用して。ゲームはアンドロイドでリリースされます(AIは重い消費を消費すべきではありません)。私の地形はグリッドベースではなく、手続き的に生成された多角形の高さマップ(洞窟なし)です。 enter image description here

敵(NPC) - 近距離、遠距離 - (弾丸)と複合戦闘の3種類があります。

エンティティには、左右に移動する3つの方法があります。すべての人が絵のように地面に乗ることができます。地形からyオフセットした節点を作ろうとしたが、プレイヤーがジャンプすると、戦闘に近い敵はパスを取ることができなかった(私はそれをテストしなかったが、それを仮定した)。

私はグリッドベースのゲームで多くの例を見ましたが、私のシナリオではありません。

私のあまり知識がなくて、私は数日前にAIの欠陥を訴えました。

質問:

  • (ほぼ)無限の世界との(libGDXから)AIは互換性はありますか?

  • ノードを設定するにはどうすればよいですか?

  • 弾丸の方向を計算してプレイヤーに当てることはできますか?

答えて

1

まず、私はlibGDXを知らないが、あなたが無限の世界を持ちたいと思ったら、それをプログラムしなければならない。それは、あなたがランダムに地形を生成し、それがもはや必要でない場合はメモリ内で破壊することを意味します。無限に左と右に移動したい場合は、メモリがいっぱいになると、あなたのハードドライブにあなたの世界を効率的に格納する必要があります。あなたのアバターに戻りたい場合は、ポリゴンの場合、ノードといくつかの数字を周囲の要素への参照として保存するだけです。

第2に、ゲームが2次元であるため、可能なパスは単純なので、パスを見つけるアルゴリズムを必要としません。だから、ノードやそのようなものは必要ありません。あなたが必要とするのは、ヒットボックスのようなものなので、敵は互いのヒットボックスを知ることができます。 AIは、あなたのアバターが左か右であるかどうか、そしてそれが直接到達可能かどうかを知ることだけが必要です。それは単純なジオメトリ計算です。他の敵に飛び越えることができる場合は、道を進むことができるようになります。

最後に、弾丸の方向は線形代数で単純に計算され、アバターから敵までの直線を取得します。あなたのアバターがヒットできるかどうかを知るためには、他の敵や地形と交差するかどうかを計算するだけで済みます。

唯一のAIの側面は、敵の行動を決定することです。これはstate machineで行うことができ、敵は、waitingfollowingまたはshootingのような状態を持ちます。あなたのアバターがどれだけ離れているか、どのくらい届くかによって、州は変わります。

関連する問題