基本のナビゲーション

このガイドでは、Unreal Engine のナビゲーション システムの使用方法を説明します。

Windows
MacOS
Linux

概要

Unreal Engine のナビゲーション システム によって、人工知能 (AI) エージェントにパス検索能力が与えられます。

スタート位置から目的地までのパス検索を可能にするために、ワールドのコリジョン ジオメトリからナビゲーション メッシュが生成されます。この簡素化されたポリゴン メッシュは、レベル内の移動可能な空間を表します。ナビゲーション メッシュのローカライズされた部分を再構築できるよう、デフォルト設定によってナビゲーション メッシュはタイルに細分化されます。

最終的なメッシュはポリゴンで構成され、各ポリゴンにはコストが関連付けられます。パス検索アルゴリズムでは、パスを検索しながら、目的地までのコストが最も小さい最適なパスを発見しようと試みます。

このシステムには、具体的なニーズに基づいてエージェントのナビゲーション ビヘイビアをカスタマイズできるさまざまな機能が用意されています。

目標

このクイック スタート ガイドでは、ナビゲーション システムを使用してレベル内を歩き回る単純なエージェントを作成する方法を学習します。

目的

  • レベルでナビゲーション メッシュ アクタを使用してナビゲーションをビルドする。

  • レベルでナビゲーション メッシュを視覚化し、ニーズに合わせて調整する方法を学習する。

  • ナビゲーション システムを使用してレベル内を歩き回るように ThirdPersonCharacter ブループリントを変更する。

1 - 必要な設定

  1. Unreal プロジェクト ブラウザの [New Project Categories (新規プロジェクト カテゴリ)] セクションにある [Games (ゲーム)] を選択し、[Next (次へ)] をクリックします。

    Select the Games category and click Next

  2. [Third Person (サードパーソン)] テンプレートを選択し、[Next (次へ)] をクリックします。

    Select the Third Person template and click Next

  3. [Blueprint (ブループリント)][No Starter Content (スターターコンテンツ無し)] オプションの順に選択して、[Create Project (プロジェクト作成)] をクリックします。

    Select Blueprint and No Starter Content and click Create Project

このセクションの結果

新規のサードパーソン プロジェクトを作成し、ナビゲーション システムについて学ぶ準備ができました。

2 - ナビゲーション メッシュを作成する

このセクションでは、ナビゲーション メッシュ バウンズ ボリューム を使用して、レベル内のナビゲーションを生成する必要のある領域を指定します。この情報を使用して、エージェントがレベル内を目的地に向かって移動します。

  1. プロジェクトのデフォルトの ThirdPersonExampleMap で、[Place Actors (アクタの配置)] パネルに移動し、「Nav Mesh Bounds Volume」を検索してレベルにドラッグします。

    Drag a Nav Mesh Bounds Volume actor to the Level

  2. その ナビ メッシュ バウンズ ボリューム を選択して、[Details (詳細)] パネルに移動し、[Scale (拡大・縮小)] を X = 20、Y= 20、Z = 5 に設定します。以下のように、ボリュームを移動させてプレイ領域全体を覆うようにします。

    Scale the volume to X = 20, Y= 20, and Z = 5

    The volume now covers the entire play area

  3. [World Outliner (アウトライナ)] ウィンドウで [ThirdPersonCharacter] ブループリントを選択し、レベルから削除します。

    Remove the Third Person Character from the Level

  4. キーボードで P キー を押して、レベル内のナビゲーション メッシュを視覚化します。以下の画像のように、ナビゲーション メッシュはデフォルトで緑色で視覚化されます。

    Unreal Engine では、ナビ メッシュ バウンズ アクタがレベルに追加されるか、サイズ変更されるとすぐに、ナビゲーション メッシュが自動生成されます。

    Press P to visualize the Navigation Mesh

  5. このナビゲーション メッシュで階段上にビジュアル アーティファクトが含まれている様子に着目してください。これが発生するのは、ナビゲーション メッシュはレベル内のコリジョンを簡素化して表わしたものだからです。[World Outliner] ウィンドウで [RecastNavMesh-Default] アクタを選択し、[Details] パネルに移動します。[Display (表示)] セクションに移動し、[Draw Offset (オフセットを描画)] の値を 50 に設定します。これにより、ナビゲーション メッシュが描画される高さのオフセットが調整され、見やすくなります。

    Set the Draw Offset to 50 for better readibility

このセクションの結果

このセクションでは、ナビ メッシュ バウンズ ボリューム アクタをレベルに追加し、プレイ領域にフィットするようにサイズを変更しました。また、P キーを押して、最終的なナビゲーション メッシュを視覚化する方法を学びました。

3 - ナビゲーション メッシュを視覚化する

このセクションでは、さまざまなナビゲーション メッシュ設定の変更方法と、レベル内のメッシュの視覚化方法の変更方法を学習します。

  1. [World Outliner] に移動し、[RecastNavMesh-Default] アクタを選択します。

    Select the Recast Nav Mesh Actor Default from the World Outliner

  2. アクタを選択した状態で、[Details] パネルに移動し、[Display] セクションまで下にスクロールします。ここに、生成したナビゲーション メッシュを見やすく視覚化するためのさまざまなオプションがそろっています。以下の例では、[Draw Poly Edges (ポリゴンのエッジを描画)] を選択して、メッシュを構成するポリゴンを表示しました。

    Select Draw Poly Edges to see the polygons that make up the mesh

  3. また、[Draw Tile Bounds (タイルの境界を描画)] チェックボックスを有効にすると、個々のナビゲーション タイルを視覚化できます。

    Enable Draw Tile Bounds to visualize the Navigation Tiles

  4. ナビゲーション メッシュの生成方法を変更するには、[Generation (生成)] セクションに移動してオプションを変更します。

このセクションの結果

このセクションでは、さまざまなオプションを調整してナビゲーション メッシュの表示設定を変更する方法と、生成方法に影響を与える方法を学習しました。

4 - 最初のエージェントを作成する

このセクションでは、付近の場所をランダムに選択し、そこに移動することでレベル内を歩き回る単純なエージェントを作成します。このエージェントは、目的地に到着したら、数秒待機してからプロセスを繰り返します。

  1. コンテンツ ブラウザ で右クリックし、 [New Folder (新規フォルダ)] を選択して新しいフォルダを作成します。このフォルダに「 NavigationSystem 」という名前を付けます

  2. コンテンツ ブラウザ で、 「ThirdPersonBP」>「Blueprints」 の順に移動し、 [ThirdPersonCharacter] ブループリントを選択します。これを「 NavigationSystem 」フォルダにドラッグし、 [Copy Here (ここにコピー)] オプションを選択します。

    Drag the Third Person Character Blueprint into the Navigation System folder and select Copy Here

  3. NavigationSystem」フォルダに移動して、ブループリントの名前を「BP_NPC_NavMesh」に変更します。ブループリントをダブルクリックして開き、 イベント グラフ に移動します。すべての入力ノードを選択し、削除します。

  4. イベント グラフ を右クリックし、「Add Custom Event」を検索、選択します。イベントに「MoveNPC」という名前を付けます。

    Right click in the Event Graph and search for Add Custom Event

  5. イベント グラフ を右クリックして、「Get Actor Location」を検索、選択します。

    Right click the Event Graph then search for and select Get Actor Location

  6. GetActorLocation ノードからドラッグし、「Get Random Reachable Point In Radius」を検索、選択します。[Radius (半径)] を 1000 ユニットに設定します。

    Drag from the Get Actor Location node and search for and select Get Random Reachable Point In Radius

  7. GetRandomReachablePointInRadius ノードの Random Location ピンからドラッグして [Promote to variable (変数へ昇格)] を選択します。

    Drag from the Random Location pin of the Get Random Reachable Point In Radius node and select Promote to variable

  8. MoveNPC ノードを先ほど作成した RandomLocation ノードに接続します。

    Connect the Move NPC node to the Random Location node

  9. イベント グラフ を右クリックし、「AI Move To」を検索、選択します。RandomLocation ノードを AI Move To ノードに接続します。

    Right click the Event Graph, then search for and select AI Move To

  10. イベント グラフ を右クリックして、「Get a reference to self」を検索、選択します。

    Right click the Event Graph and search for and select Get a reference to self

  11. Self ノードを AI Move To ノードの Pawn ピンに接続します。以下のように、Random Location ノードの 黄色 のピンを AI Move To ノードの Destination ピンに接続します。

    Connect the Self node to the Pawn pin of the AI Move To node

  12. AI Move To ノードの On Success ピンをドラッグして、「Delay」を検索、選択します。以下のように、このノードの [Duration (期間)]4 に設定します。Delay ノードの Completed ピンをドラッグして、「MoveNPC」を検索、選択します。

    Drag from the On Success pin of the AI Move To node and add a Delay node. Set Duration to 0.4. Drag from the Delay node and add a Move NPC node

  13. 上記の手順を繰り返して、ノードを AI Move To ノードの On Fail ピンに追加します。Delay ノードの [Duration] を 0.1 に設定します。

    Repeat the steps above to add nodes to the  On Fail pin of the AI Move To node

  14. イベント グラフ を右クリックし、「Event Begin Play」を検索して選択します。Event Begin Play ノードからドラッグして、「MoveNPC」を検索、選択します。

    Right-click the Event Graph, then search for and select Event Begin Play

    Drag from the Event Begin Play node, then search for and select Move NPC

  15. ブループリントを コンパイル して、保存 します。

  16. [BP_NPC_NavMesh] ブループリントをレベルにドラッグして、 [Simulate (シミュレーション)] をクリックします。これで、エージェントがレベル内を歩き回ります。

    Your Agent is now moving in the Level

    Multiple Agents are moving in the Level

このセクションの結果

このセクションでは、 ナビゲーション メッシュ を使用してレベル内を歩き回る単純なエージェントを作成する方法を学習しました。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
閉じる