読者です 読者をやめる 読者になる 読者になる

テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

障害物を動的に追加してルートを更新する #Unity

Navmeshで作成した移動ルートに障害物を追加し、別のルートを通るようにする方法を紹介します。この方法を使用すると、例えば下のような動きが可能になります。

 やり方

やり方…といっても難しい事はありません。

まずは普通にNavmeshを焼いて移動範囲を設定します。

f:id:tsubaki_t1:20150707225648p:plain

次に障害物にNavmeshObstacleを設定します。この時、Carve(掘る)にチェックを入れる事がポイントです。これでNavmeshに穴が空きます。

この機能は以前は無かったと思うのですが、いつの間にか追加されてました。

f:id:tsubaki_t1:20150707225430p:plain

f:id:tsubaki_t1:20150707225949p:plain

このNavmeshObstacleは自由に移動させる事が出来るので、門の開閉といったギミックでAIの移動ルートを変更したい場合に使えます。

但しNavmeshの更新は移動後すこし後なので(正確にはNavmeshObstacleが静止した後carvingTimeToStationary秒後)、そこだけ注意が必要です。またNavmeshObstacleの移動は、ルートの計算前にやらなければパスは更新されません。

応用すると、こんな感じでステージを動的に生成することも出来たりします(平面のステージに限る)

 以前はCarveが無かったのでレイヤーにコスト設定するしかルート設定する方法が無く正直使い勝手が悪かったのですが、これで少し使いやすくなりそうです。

tsubakit1.hateblo.jp

tsubakit1.hateblo.jp

関連

tsubakit1.hateblo.jp

http://unity-chan.com/images/imageLicenseLogo.png