2

現在、Unity で 2D サイドスクローラーのゲームを作成しています (したがって、すべてのスプライトは側面から表示されます)。

プロシージャルに生成された地形 (Terraria 風だと思います) があり、タイルの 1 つをクリックして、そこへのスプライト パスを作成できるようにしたいと考えています。

ただし、スプライトは次のことを知っている必要があります。

  1. タイルにアクセスできるかどうか (つまり、完全に地下にあるわけではないか、空にランダムに上がっているわけではありません)
  2. そこにたどり着くまでの最短ルート。

現在、タイルを短い配列として保存しています。

これを知っている場合、A* は私が追求するのに最適なアルゴリズムですか? この種のことをどこから調べ始めるかについて、他に良い情報/ヒントを持っている人はいますか?

私の主な概念上の問題は、AI がタイルにアクセスできるかどうかを認識できるようにすることです。

どんなヘルプ/ポインタも大歓迎です!

4

1 に答える 1

1

A* は最短経路を見つけるのに適した方法ですが、経路が存在するかどうかを確認するために使用するのは大変です。これは、パスがないことに気付く前に、アクセス可能なスペース全体を検索しているためです。このオンライン ツールを使用して、さまざまな検索アルゴリズムを試すことができます。

すべてのノードが相互にアクセスできるパスが異なるスペースごとにストア ID であるかどうかを確認するために使用できるクイック ハック。この ID は、アクセス可能なすべてのノードを通過する再帰関数を使用して簡単に割り当てることができます。再帰が終了したら、まだ ID を持っていない別のスペースから新しい ID を使用して再帰を開始します。うまくいけば、次の図が私のポイントを明確にします。

11111¤22222¤
111¤¤¤222¤¤¤
1¤¤¤3¤¤¤¤¤44
¤¤3333¤¤4444

これ¤は壁で、数字はスペースの ID です。もちろん、各ノードに余分な short を格納する必要があるため、ストレージを short 配列から別のものに変更する必要があります。

于 2014-10-28T16:32:02.457 に答える