hoge

いわゆるWeb Developerの備忘録

【UE4】Nav Meshを使ったプレイヤーの移動範囲を制限する

卒業研究の VR 空間を作るのに、ゲームエンジンの Unreal Engine 4 を使っているのですが、Nav Mesh を使った移動でプレイヤーが特定のキャラクターより先に移動できないようにする方法が必要になりました。

調べてみると Navigation Invoker というコンポーネントで動的に Nav Mesh の範囲を変更できるのですが、日本語の記事が見当たらなかったのでまとめます。

バージョンは 4.23 です。

Navigation Invoker は 4.8 から追加された機能で、効率的に Nav Mesh をレンダリングし、オープンワールドのような広大なフィールドで使うことを想定しているようです。

Unreal Engine 4.8 リリースノート | Unreal Engine ドキュメント

一見するととても使えそうな機能ですが、なぜか記事がありません。おかげで調べるのに大変苦労しました。

Navigation Invoker を使うには従来と同じく Nav Mesh Bounds Volume をレベルに配置します。

範囲もプレイヤーに移動させたい大きさに指定します。この時 P キーを押すと Nav Mesh の範囲が緑色で表示されます。

Navigation Invoker では、プロジェクト設定 > エンジン > ナビゲーションシステムからGenerateNavigationOnlyAroundNavigationInvokersを有効にする必要があります。

また Nav Mesh を動的に生成するため、プロジェクト設定 > エンジン > ナビゲーションメッシュからRuntime GenerationDynamicに変更します。

GenerateNavigationOnlyAroundNavigationInvokersを有効にした段階で、P キーをいくら押しても Nav Mesh の範囲が表示されなくなります。

この状態で Nav Mesh を動的に生成したいキャラクターに Navigation Invoker コンポーネントを追加すると、キャラクターの周りに Nav Mesh の範囲が表示されるようになります。

キャラクターを移動させると Nav Mesh もキャラクターにあわせて移動します。

Nav Mesh の大きさは Navigation Invoker のTile Generation RadiusTile Removal Radiusから指定できますが、あまり小さいサイズにはできないようです(10m x 10m がぐらい最小?)。

以下の動画が参考になります。

Navigation Invoker の存在を知って嬉々としてたのですが、3m x 3m ぐらいまで範囲を絞りたかったので結果的には実現したいことができませんでした。

また別のアプローチを探す必要がありますが、同じように困っている人に向けて残しておきます。


同じカテゴリー(Tech)の記事
上の画像に書かれている文字を入力して下さい
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。

削除
【UE4】Nav Meshを使ったプレイヤーの移動範囲を制限する
    コメント(0)