2012-01-22 4 views
0

私はPythonで小さなゲームを開発しています。私は2Dの長方形のグリッドを使用しています。私はパスファインディングのためにA *などを使うことができることを知っていますが、これはどういう仕組みか知っていますが、問題は少し異なります。2Dグリッドのオブジェクトから離れてください

たとえば、コンピュータで制御される人間とコンピュータで制御されるゾンビがあるとします。人間がゾンビを見つけたら、できるだけ遠くから離れるべきです。現時点では、私は別のゾンビを見つけて繰り返すまで、すべてをテストするために180度回転して逃げます。

明らかにこれはあまりスマートではありません(両側にゾンビがある場合は問題を引き起こす可能性があります)。

これを行うよりスマートな方法があるのだろうかと思っていましたか?ダイクストラを使って私が走れる「安全なゾーン」を見つけるのが好きですか?代替手段はいつでも歓迎ですが、私はそれを理解することはできません。

答えて

1

ゾンビはゾンビが見ることができないと思っている場所を特定の範囲(半径またはもっと賢いかもしれない)内のすべてを見ることができ、人間が探すことができます。ゾンビが見ることができない最も近い場所を選んで、A *アルゴリズムを使ってパスがあればそれを探し、そうでなければ別のものを試してみてください。走るべき場所がないときを見てください。あるいは、あなたがその場所を選択した場合、ゾンビからどのくらい離れているかに基づいて、可視領域のすべてのスポットに重み付けをすることができます。

+0

私はこのようなことをしようとしています。私はゾンビの距離と存在に応じて、人間の周りの特定の半径にあるすべての細胞にスコアを与えるつもりです。それから最低のスコアで細胞に風のように走ります。それはちょうどあなたの最後の文で言ったことであるので、私はあなたの答えを正しいものとしてマークします。 – KWyckmans

+1

最初のオプションは、2番目のオプションで見つからないいくつかの面白いシナリオを可能にします。ゾンビがn歩先を見ることができることを知っていれば、あなたの人間はゾンビのすぐ隣にある壁の背後に隠れる可能性があります。 2番目のオプションは、近くにゾンビがいくつあるかに基づいて、最も安全な場所にあなたを連れて来るようにしようとします。これは最初のものより洗練されていませんが、ゾンビのAIがどのように機能するかによって異なります。 –

+0

私はそれをより洗練されたものにするために、最初に基本的なものを試してみるかもしれません。 – KWyckmans

0

ちょうど私の頭の上から離れて、あなたはおそらく何らかのベクトル数学をして、人間をゾンビの法線ベクトルで走らせることができます。

私はこれが動作しますどれだけ(またはそれはあなたが持っているゾンビの数に拡張する方法を)知りませんが、あなたのようなものを行うことができます:距離を計算し、各ゾンビについて

  • をそれは人間のものであり、それは人間のものです。

  • 距離の方向と逆数を使用して、各ゾンビ(または近いゾンビの一部)のベクトルを作成します。ゾンビに近いほど逃げることが重要になるためです。

  • すべてのベクトルの合計を求めます。

  • 人間を結果に垂直なベクトルで走らせます。

リソースの集中度はわかりませんが、実行する場所の優先順位を決定する最も論理的な方法のようです。

+0

ええ、ええ、これがどういうものか分かりますが、もっと簡単な解決法を試してみるつもりです。 – KWyckmans

関連する問題