すべての通常の経路がブロックされているときに障害物を通る最短経路を見つけます


10

タワーディフェンスを作成していて、基本的なパスファインディングが機能していますが、問題が発生しました。

パスをブロック可能にしたいと思います。ブロックが発生すると、ランナーはブロックタワーを攻撃します。

だから私が必要なのは、最も重要なのは、塔の数が最も少ない最短経路を見つける方法です。

それ、どうやったら出来るの?


1
それはあなたの歩行可能なパス内の衝突検出ではないでしょうか?
Prix

ブロッキングタワーは破壊可能であるため、実際には道があります。それらの中を移動するだけのコストは、遮るもののない経路に沿って移動するよりもはるかに高くなります。(下のcoderangerからの回答を参照)
bummzack

回答:


21

あなたのパスのスコアリングでは、塔を通過するコストがいくつかのタイルを通過するのと同じになるように、それを作るだけです。一般にそれはそれらを回避しようとしますが、そのようなパスがない場合でも、出力は最小限の数の障害物を通過します。ペナルティを調整して、必要に応じて、マップ全体を移動するのではなく、ただ通過するようにすることもできます。


この実装のコード例を見てみたい、シンプルで堅牢なサウンド
DFectuoso 2010

3
A *アルゴリズム(en.wikipedia.org/wiki/A * _search_algorithm)はパスコストで機能します。塔を通過するセグメントのコストを増やすだけです。エージェントはタワーを避けようとするか、タワーを攻撃するのが「安っぽい」場合はタワーを攻撃します。A *アルゴリズムのアイデアは、コストを最小限に抑えることです。そのため、パスコストを調整するだけで、希望
どおりの結果

これは私が考えもしなかった素晴らしい解決策です、ありがとう!
ジョッキング

単なるメモ:経路が明らかにブロックされているときにA *アルゴリズムに使用される推定を増やすことなくタワーノードに大きな移動コストを与えると、エージェントは、障害を決定する前に障害物の一部のすべてのノードをチェックしますポイントを通して。ノードとエージェントの量によっては、アルゴリズムが極端に遅くなる場合があります。
Martin Sojka、2011
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.