空中を自動的に障害物を避けながら飛ぶプラグイン「DoN AI Navigation」
「UE4の標準のナビゲーションシステムは、空中を浮いて移動するキャラクターには向いてない。じゃあ標準じゃないナビゲーションシステムを使えばいいのではないか? ということで今日紹介するのはこの、DoN AI Navigation」
「プラグインは英語で、動画の説明も英語なんだけど、だいたい見た感じで言いたいことはわかるはず。プラグインの主な特徴はこんなかんじ」
(1) 空中を移動するキャラクター用のナビメッシュ的な物を作成する
(2) (1)を使って移動するために、ビヘイビアツリーにFlyToタスクが追加される
(3) どのコリジョンを対象に避けるかは自由に設定出来る
(4) 障害物が移動した場合にもルートを探し直すことが可能
(5) 物理エンジンで動いてる物体を避けることも出来る
(6) ゆっくり閉じる扉などでは、完全に通れなくなるまで突撃する(動きの予測は出来ない)
「ナビメッシュの場合は、地面にポリゴンをはりめぐらす感じだったけど、このプラグインは全部空間を立方体で区切ったものとして考えている。図はデモンストレーション用だから四角が見えるけど、これはもちろん消すことができる。一度立方体を作ってしまえば、細かいポリゴンの判定は省略出来て、最短ルート検索を高速化出来る」
妹「これだと空中でも大丈夫なの?」
「空中でも大丈夫。ナビメッシュと同じような感じで範囲指定するようになってて、その範囲内であれば、空中に浮いてる物体もどこかの立方体に含まれるから、そこが通れるのか、通れないというのかと区別される」
妹「これがあればオバケだけ檻の上から行くのもできそう」
「立方体の大きさは多分大きい方が動作は高速になるけど、あんまり大きいと細い道が通行不能になるから、ある程度は細かくしておく必要がありそう」
妹「これってひょっとして2Dゲームでも使えるのでは? 前に悪い妖精さんに追いかけてもらおうとした時は、ナビメッシュじゃ上手くいかなかったけど」
「使えると思うよ。コリジョンは3Dのと同じだから。奥行き方向に行かないようにするための工夫は必要だろうけど。立方体をマップ用のブロック1つ分と同じか、ブロックを割り切れる大きさにすれば、動きも自然になる」
妹「なぜUE4に最初からコレが入ってなかったの?」
「これはこれで歩くキャラクタには不便だからね。立方体の大きさとかである程度は対処出来るけど、どうしてもカクカクになるから斜めの坂登るのは無理だし。あくまでフワフワ動いてるキャラクター専用」
妹「これ使ってるとナビメッシュは使えないの?」
「タスクでMoveToを使えばナビメッシュにそって動くし、FlyToを使えばこのプラグインの設定動くけど、使わない方の設定は無視されるだけだから問題ない。歩くキャラと浮くキャラと別のビヘイビアツリーを作ればいい。同じキャラクタで状況に合わせて切り替えるというのも出来なくはなさそう」
妹「AIMoveToみたいにブループリントから呼び出す方法は?」
「それは見つからなかった。紹介動画で使ってるサンプルプロジェクトもダウンロード出来るけど、そこでもビヘイビアツリーを使ってたから、多分ビヘイビアツリーの使用が前提だと思う」
妹「ビヘイビアツリー作るのはちょっと面倒だけど、空中をふわふわ飛んでいくのは何かと必要だったから、ちゃんと避けて飛んでくれると助かる」
「これが必要なケース結構あると思うよ。アクションとかシューティングとか。元々このプラグインも、ゲームを作る時に必要だったから作られたも物で、そのプラグイン単品を無料公開することにしたらしい」