私はこれをある種のビヘイビアツリーソリューションで行います-あなたは目標に向かって進み、A *を妨げているすべての障害に注意してください。失敗した場合、それらの障害を克服するのに役立つオブジェクトがあるかどうかを確認します。その場合、そのオブジェクトへのパスです。繰り返す。これは、ツールを使用するというアイデアを得る前に、エージェントが目標にパスして失敗する必要があることを意味します。特に、すべてをチェックする必要があるタイルの巨大な世界がある場合は、時間がかかる場合があります。ただし、エージェントが問題の解決方法について熟考するのにしばらく時間がかかることから、あまりにも外に見えないことがあります。
しかし、実際のハードコアソリューションを想像できます。パス検索グリッドに別の次元を追加します。したがって、2Dマップの場合、パスファインディンググリッドを3Dにします。この単純な例では、この新しい次元の深さは2のみですが、実際のゲームではすぐに大きくなります。
z = 0では、通常の状況で地形をマッピングします。つまり、水タイルは通行不可能と見なされます。
z = 1では、レーキがある間、地形をそのままマップします。つまり、水タイルは歩行可能と見なされます(ただし、たとえば壁タイルがある場合、固体のままである場合があります)。
パスファインディングは、x次元とy次元の通常のA *です。つまり、すべてのグリッドセルがその隣接セルにアクセスできると見なされます。ただし、z次元では、A *は拡散できません。
熊手があるところを除いて。レーキオブジェクトは、経路探索グリッドのz = 0とz = 1の間の開口部として機能します。
これは、A *がz = 0で外側に塗りつぶし、水に当たり、オプションがなくなることを意味します。次に、レーキタイルを介してz = 1に広がります(水が歩くことができる場合)。ゴールへの道を見つける。その効果は、ためらいのないNPCがレーキに移動し、次に最短経路をゴールに移動することです。