##はじめに
UE4上ではNavMeshを複数使い分けることで、敵やNPCが侵入不可のエリアを作成したり、敵の種類によって棲み分けを行うことが可能となります。
##作成/設定方法
以下の記事に基本的な設定方法が記載されています。
【UE4】ナビゲーションシステムのSupportedAgentsについて
##確認事項
基本的な設定が終わったらUE4上部メニューから 「編集」>「プロジェクト設定」でプロジェクト設定ウィンドウを開き、左のメニューから「エンジン」>「ナビゲーションシステム」を開いてください。
今回は「Supported Agents」にある自身で設定したTypeの "Navigation Data Class" と "Preferred Nav Data" を以下の状態に設定しています。この自身の設定に沿うように配置しているキャラクターの「Movement Capability」項目にあるプロパティ群と一致するかの確認も行ってください。
ここで、上記の記事に従った通りに設定を行っていれば、とりあえず複数NavMeshの分類対応は行えると思います。
ですが、例えば、同じ大きさ且つ同じ動きが可能なNPCと敵がいたとしたら、上記パラメータでの分け方だけだと不十分な可能性があります。この場合に、Typeに適用している "Navigation Data Class" と "Preferred Nav Data" のRecastNavMeshクラスを継承したカスタムRecastNavMeshクラスにすることによって実現可能かと思われます。具体的な作成方法は以下の通りです。
##RecastNavMeshのカスタムクラス作成
確認後、これらの横にある虫眼鏡アイコンを押下し、UE4エディタ上の「コンテンツブラウザ」を確認してください。おそらく、「エンジンC++クラス」>「Engine」>「Classes」>「AI」>「Navigation」というパスで表示されていると思います。そのコンテンツブラウザを開いている状態から、左上の新規追加ボタンを押下してください。
プルダウンメニューが開かれるので、そこから"新規C++クラス..."を選択します。すると、「C++クラスを追加」というウィンドウが開かれます。このウィンドウの左上部にある、"全てのクラスを表示"というチェックボックスにチェックをしてください。検索ボックスとすべてのクラスが表示されたら、検索ボックスからRecastNavMeshを検索し、選択状態にしておきましょう。
次に「新規 Recast Nav Mesh に名前を付ける」という画面が表示されるので、任意で "ファイル名" と "パス" を編集してください。編集後はそのままクラスを作成して頂いて問題ありません。
クラス作成後は先ほどの「ナビゲーションシステム」から見ることができる「Supported Agents」の任意Typeの "Navigation Data Class" と "Preferred Nav Data" を先ほど作成したカスタムRecastNavMeshを適用してください。また、それに伴い、配置しているキャラクターの「Movement Capability」項目にあるプロパティ群とも一致させるよう設定してください。
ここまで設定が完了したら、あとは念のため一度UE4上でビルドを行い、想定通りにキャラクターが動いているか確認をしてみましょう。もしも、うまく動作していない場合、作成したNavMeshをあちこち移動させたり編集を行うことで参照がどこかに残ってしまっている可能性があります。その場合は、一度エディタの再起動を行うか、再度UE4上でビルドを行うか、マップ上に配置しているNavMeshを一旦作成しなおす等を行ってみてください。
以上。