Navmeshで作成した移動ルートに障害物を追加し、別のルートを通るようにする方法を紹介します。この方法を使用すると、例えば下のような動きが可能になります。
通せんぼ pic.twitter.com/Y40BemdXA2
— 椿 (@tsubaki_t1) 2015, 7月 2
やり方
やり方…といっても難しい事はありません。
まずは普通にNavmeshを焼いて移動範囲を設定します。
次に障害物にNavmeshObstacleを設定します。この時、Carve(掘る)にチェックを入れる事がポイントです。これでNavmeshに穴が空きます。
この機能は以前は無かったと思うのですが、いつの間にか追加されてました。
このNavmeshObstacleは自由に移動させる事が出来るので、門の開閉といったギミックでAIの移動ルートを変更したい場合に使えます。
但しNavmeshの更新は移動後すこし後なので(正確にはNavmeshObstacleが静止した後carvingTimeToStationary秒後)、そこだけ注意が必要です。またNavmeshObstacleの移動は、ルートの計算前にやらなければパスは更新されません。
応用すると、こんな感じでステージを動的に生成することも出来たりします(平面のステージに限る)
動的にあたらしいステージを作る(平面に限る) pic.twitter.com/3Yu23ClweO
— 椿 (@tsubaki_t1) 2015, 7月 2
以前はCarveが無かったのでレイヤーにコスト設定するしかルート設定する方法が無く正直使い勝手が悪かったのですが、これで少し使いやすくなりそうです。