【Unity】Navmeshを動的Bakeしたい・・

「PATANKOの経路探索ってどうやってるの?」
アプリをリリースした時に、数人からこの質問を受けたので、対策メモです。



↑PATANKOは、こんな感じで、パタンコ、パタンコとカードをめくると、ステージの地形が変化し、ゴールまでの道筋もどんどん変わるというパズルゲームです。
ステージが進むと、動かせる障害物や、動きまわる敵も出てくるので、

プログラマな方は、
「どんなアルゴリズム?」

普段Unityを触っている方は、
「Navmesh?何かアセット使ってる?」

という疑問を持たれたのかな・・と想像します。

私も、ココの実装、どうしようか悩みました。
最初は、UnityのNavmeshで対応しようと思ってたのですが、動的ベイクはできないようで・・

そもそも、PATANKOの地形メッシュは、レベルロード時に動的生成しているので、あらかじめ地形メッシュをプレハブ化して、Navmeshを静的ベイクしておく・・ということができません。。

藁にもすがる思いで、まず試したのが、有名な「A* Pathfinding Project」
Navmeshの動的ベイクにも対応しつつ、無料版も試せるんですよね。
だけど、思いどおりに使いこなすことができず断念しました・・(単に私の英語スキルと理解力の問題かも・・)

うーん、うーん、うーん・・

ハッ!
PATANKOは、3Dゲームだけど、マップ構造は単なる2次元配列じゃん!!

Navmeshの動的ベイクにこだわってたけど、実は単に2次元マップの経路探索が出来ればいいだけじゃない??

はい。そうでした。。
結局のところ、経路探索アルゴリズムである「A*法」で、実装しました。
「A*法」については、たくさんの方がとても参考になる記事を書いるので割愛しますね。
驚いたのは、このアルゴリズム、とてもシンプルだったことです。

同じようなコトで悩まれている方は、もしかしたら、コレで解決できるかも?!

長々と引っ張って、「Navmeshの動的ベイク方法」じゃなくてゴメンナサイ・・


この記事へのコメント