Unreal Engine のナビゲーション リンク
ナビゲーション リンク は、レベル内の直接の接続がない 2 つのナビゲーション可能エリアを接続する方法です。例としては、高架式プラットフォームと地面、または直接の接続がない 2 つのプラットフォームなどです。
デベロッパーは、NavLink proxy アクタ をレベルに配置し、ナビゲーション可能エリア間の接続ポイントを定義することでナビゲーション リンクを手動で追加することができます。
NavLink proxy アクタ の詳細については、「ナビゲーション メッシュを修正する」のドキュメントを参照してください。
自動ナビゲーション リンク生成
Unreal Engine 5.5 では、ナビゲーション メッシュ設定内に ナビゲーション リンクの自動生成 を導入します。
自動生成を有効にするには、次の手順を実行します。
-
レベルに ナビゲーション メッシュ境界ボリューム アクタを配置し必要に応じてスケールします。
- [Outliner (アウトライナー)] で [RecastNavMesh-Default] アクタを選択します。
- [Details (詳細)] パネルに移動し、[Generation (生成)] セクションまでスクロールして、[Generate Nav Links (ナビゲーション リングを生成)] のチェックボックスを 有効に します。

-
Unreal Engine は自動的にナビゲーション リンクを生成します。
ナビゲーション リンク生成を構成する
Unreal Engine はナビゲーション リンクの飛び降りの構成設定に基づいてナビゲーション リンクを生成します。これらのリンクは主に AI エージェント (NPC) のジャンプや下降を有効にするために使用します。
設定内容は以下のとおりです。
| 設定 | 説明 |
|---|---|
| ジャンプの長さ | ジャンプの水平方向の長さ。 |
| エッジからのジャンプの距離 | ジャンプの開始位置が NavMesh エッジからどのくらい離れているか。 |
| ジャンプの最大深度 | 開始の高さからどれくらい下で着地する地面を探すか。 |
| ジャンプの高さ | 開始位置の高さを基準とするピークの高さ。 |
| ジャンプの端の高さの許容範囲 | ジャンプの両端で地面を見つける許容範囲。 |
| サンプリング分離係数 | この値はサンプリング軌道間の距離を検出するために CellSize で乗算されます。デフォルト値は 1 です。大きい値は生成スピードを改善しますが、サンプリング エラーが発生する場合があります。 |
| フィルター距離のしきい値 | 同様のリンクをフィルタリングするとき、同様のリンクを一致させるためセグメント エンドポイント間で比較するために使用される距離です。 |
| 領域クラス | この構成で生成されたリンクの領域クラス。 |
| リンク プロキシ クラス | この構成で作成されたリンクを処理するために使用するクラス。これにより、デベロッパーはナビゲーション リンクを使用中にカスタム動作を実装できます。 |
以下は、設定のイラストレーションです。
パフォーマンスに関する考慮事項
タイル生成中のナビゲーション リンクの生成と検証の処理には、追加の CPU サイクルが必要になり、タイルの生成時間に影響します。この負荷を最小限に抑えるには、以下の推奨事項に従ってください。
ジャンプの長さ
この値が生成コストに最も影響を与えます。長さが十分な場合、ナビゲーション メッシュ タイルのラスタライズ サイズが大きくなる可能性があります。パフォーマンスを向上するため、ジャンプの長さを妥当な値に保ちます。
サンプリング分離係数
この値のデフォルトは 1 (エフェクトなし) ですが、より大きな値にして垂直方向の起動サンプリング間の距離を広げることができます。これにより、容易な最適化が可能になりますが、サンプリング精度の低下により一部のナビゲーション リンクにコリジョンが発生する可能性があります。
NavMesh エッジの数
ナビゲーション リンクの生成と検証の処理は、各ナビゲーション メッシュ境界エッジに対して実行します。つまり、より複雑なナビゲーション メッシュ タイルへのナビゲーション リンクの生成は、さらに負荷が大きくなります。
ナビゲーション リンク生成時間
以下の手順に従うと、調整がナビゲーション リンクの生成時間にどのように影響するかを確認できます。
-
[Outliner] で [RecastNavMesh-Default] アクタを選択し、[Details] パネルに移動します。
-
[Display (表示)] セクションまでスクロールして、[Draw Tile Build Times (タイル ビルド時間を描画)] のチェックボックスを 有効 にします。
-
これで、平均リンクビルド時間 が画面に表示されるようになりました。
ナビゲーション リンクにカスタム動作を追加する
生成されたナビゲーション リンクは、レベルに手動で追加できる ナビゲーション リンク プロキシ アクタと同じです。つまり、リンク プロキシ クラス をリンクに割り当てることでカスタム動作を追加することができます。
ナビゲーション リンクに ジャンプのアビリティ を追加するには、次の手順を実行します。
- コンテンツ ブラウザ で右クリックし、[Blueprint Class (ブループリント クラス)] を選択して [Pick Parent Class (親クラスを選択)] ウィンドウを開きます。
- [All Classes (すべてのクラス)] カテゴリを展開し、「GeneratedNavLinksProxy」 を検索して選択します。
- [Select (選択)] をクリックして、アセットに名前を付けます。

- コンテンツ ブラウザ でアセットをダブルクリックして開きます。
- 以下のブループリント コードを追加します。
- コンパイル して 保存 します。

- [Outliner] で [RecastNavMesh-Default] アクタを選択します。
- [Details] パネルに移動し、[Nav Link Jump Down Config (ナビゲーションリンクの飛び降りの構成)] セクションまでスクロールして、ドロップダウンから作成した [Link Proxy Class (リンク プロキシ クラス)] を追加します。

ナビゲーション リンク動作をテストする
カスタム動作をテストするには、ナビゲーション リンクを使用し、ランダムな目的地へ行く AI エージェントを作成します。
このガイドではセットアップについて説明しますが、順を追って説明しません。AI エージェントの作成の詳細については、「AI (人工知能)」のドキュメントを参照してください。
以下の手順に従って、AI エージェントを作成します。
-
AI エージェントの目的地となる アクタ 型の新しいブループリントを作成し、「BP_Target」と名前を付けます。以下の例では、視覚的表現として 球形メッシュ を持つ スタティックメッシュ コンポーネント を追加しました。
-
Unreal Engine サードパーソン テンプレートに付属する BP_ThirdPersonCharacter ブループリントを複製し、「BP_NPC」という名前を付けます。
または、[+Add (+追加)] > [Add Feature or Content Pack (機能またはコンテンツパックの追加)] をクリックし、[Third Person (サードパーソン)] テンプレートを選択してプロジェクトに追加します。
- [Event Graph (イベント グラフ)] から既存のコードをすべて削除し、以下の画像のコードを追加します。
- コンパイル して 保存 します。

-
AI エージェント といくつかの BP_Target アクタをレベルに配置します。
- [Simulate (シミュレート)] を押して、AI エージェントが目的地間を移動するのを確認します。
- 以下の例は、複数の AI エージェントがランダムな目的地に移動する様子です。