ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
この記事の要点
- Nav Mesh Bounds Volume は AI が移動可能なエリアを定義するボリューム
- 配置: Place Actors → Volumes → Nav Mesh Bounds Volume をシーンにドラッグ
- 生成: 配置後 P キーで Navigation 可視化、Build > Build Paths で再生成
- 裏で生成されるのは Recast Nav Mesh(自動生成、Brush Settings でサイズ調整)
- 動的生成は Project Settings → Navigation Mesh → Runtime Generation = Dynamic
1Nav Mesh とは
Nav Mesh (ナビゲーションメッシュ) は、AI キャラクターがどこを歩けるかを示す地形データです。UE5 では Recast アルゴリズムが使われており、レベル形状から自動生成されます。AI MoveTo、AI Navigation、Behavior Tree の MoveTo タスク等は、すべてこの NavMesh の存在を前提に動作します。
2Nav Mesh Bounds Volume の役割
NavMesh はNav Mesh Bounds Volume の内側だけに生成されます。レベル全体に NavMesh を貼るには、レベルを覆う巨大なボリュームを置く必要があります。
3手順1: ボリューム配置
- UE5 エディタ上部の Window → Place Actors(または左パネル)を開く
- カテゴリから Volumes を選択
- Nav Mesh Bounds Volume を Viewport にドラッグ&ドロップ
- Details パネルで Brush Settings の X / Y / Z サイズを調整
- レベル全体を覆うように位置・サイズを修正
4手順2: 生成確認
ボリュームを置くと自動的に RecastNavMesh アクタもシーンに生成されます (Outliner で確認可能)。
| 操作 | 結果 |
|---|---|
| P キー (Viewport で押す) | NavMesh 可視化 ON/OFF(緑色で表示) |
| Build → Build Paths | NavMesh を再生成 |
| Build → Build All Levels | 全レベル再ビルド |
| Show → Navigation | Viewport 表示メニューから切替 |
5RecastNavMesh の主要パラメータ
Outliner で RecastNavMesh-Default を選択して Details パネルで調整します:
| パラメータ | 説明 | 典型値 |
|---|---|---|
| Agent Radius | 歩く AI の半径 | 34 |
| Agent Height | AI の高さ | 144 |
| Agent Max Slope | 登れる傾斜角 | 44° |
| Agent Max Step Height | 登れる段差 | 35 |
| Cell Size | セルサイズ (小さいほど精密、重い) | 19 |
| Cell Height | セル高さ | 10 |
| Tile Size UU | タイル分割サイズ | 1000 |
| Runtime Generation | Static / Dynamic / Dynamic Modifiers Only | 用途次第 |
6静的 vs 動的 NavMesh
| モード | 用途 | 負荷 |
|---|---|---|
| Static | レベル形状が変わらないゲーム(FPS の固定マップ) | 軽い |
| Dynamic | 破壊・建築・移動床がある(Fortnite, Minecraft 系) | 重い |
| Dynamic Modifiers Only | NavModifier の領域だけ動的に変える | 中 |
Project Settings → Navigation Mesh → Runtime Generation で切替。
7複数ボリュームで広域カバー
1 つの巨大ボリュームを置くより、必要なエリアごとに複数の中型ボリュームを置く方が:
- NavMesh の生成範囲を絞れる → メモリ節約
- 不要な空中・地下まで生成されない
- Open World ではWorld Partition の Cell 単位で配置可能
8NavMesh が生成されないケース
| 症状 | 原因 | 対処 |
|---|---|---|
| ボリュームを置いても緑色が出ない | 下に地面がない / Collision なし | Static Mesh の Collision Complexity 確認 |
| 傾斜が緑にならない | Agent Max Slope より急 | 角度を上げる or 緩斜面に |
| 段差で AI が止まる | Step Height より高い | Agent Max Step Height を増やす |
| 狭い通路で生成されない | Agent Radius が大きすぎ | Radius を下げる or 通路を広げる |
| 動的物体で更新されない | Runtime Generation = Static | Dynamic に変更 |
| Project Settings の Navigation System Class が空 | システム自体無効 | Default Navigation System Class に NavigationSystemV1 を設定 |
9Project Settings での Navigation 設定
Edit → Project Settings → Navigation System
- Default Navigation System Class: NavigationSystemV1
- Auto Create Navigation Data: true
- Generate Navigation Only Around Navigation Invokers: false
(true にすると AI 周辺のみ生成 = Open World 向け)
Edit → Project Settings → Navigation Mesh
- Runtime Generation: Static / Dynamic
- Agent Radius / Height / Max Slope / Step Height
- Cell Size / Cell Height
- Tile Pool Size
10NavModifier Volume との組み合わせ
「ここは AI が通れない」「コストが高い」を表現するのが Nav Modifier Volume:
Place Actors → Volumes → Nav Modifier Volume を配置
Details → Area Class:
- NavArea_Default : 通れる
- NavArea_Null : 通れない (穴扱い)
- NavArea_Obstacle : 障害物
- NavArea_LowHeight : 低い天井
- 自作 NavArea クラス : カスタムコスト
11AI MoveTo の使い方
// AI Controller から
void AMyAIController::MoveToTarget(AActor* Target)
{
UAIBlueprintHelperLibrary::SimpleMoveToActor(this, Target);
}
// または
void AMyAIController::MoveToLocation(FVector Location)
{
MoveToLocation(Location, 5.0f, true, true, false, true);
}
// Behavior Tree から MoveTo タスクで利用
// → 内部で NavMesh の経路探索 (A*) が走る
12Open World での Navigation Invoker
巨大なオープンワールドでは全領域に NavMesh を貼るとメモリが破綻します。Navigation Invoker コンポーネントを AI に持たせると、AI 周辺のみ動的生成されます:
1. Project Settings → Navigation System
→ Generate Navigation Only Around Navigation Invokers: true
2. AI Character の Components に
→ Navigation Invoker Component を追加
3. Tile Generation Radius / Removal Radius を設定
(近くで生成、遠ざかれば破棄)
13パフォーマンス指針
- Cell Size が小さいほど精度↑・生成時間↑・メモリ↑
- 大半のゲームでは Cell Size = 19(デフォ)で十分
- Dynamic モードは Static の数倍重い。本当に必要なときだけ
- Open World は Navigation Invoker 必須
- 不要な空中・地下にボリュームを広げない
14FAQ
Q: ボリュームを置いたのに AI が動かない
A: ① P キーで NavMesh 可視化、② AI Character の Movement Component が CharacterMovement か、③ AI Controller の AutoPossess、④ Behavior Tree / Blackboard が正しいか。
Q: ランタイムでボリュームを動かしたい
A: Runtime Generation を Dynamic に。Volume を Movable にして SetActorLocation。タイル単位で再生成されます。
Q: NavMesh の上を歩くより階段を使ってほしい
A: Nav Modifier Volume + 自作 NavArea でコストを上げる。または NavLink Proxy で経路を明示。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- Event BeginPlay
- Event ActorBeginOverlap
- Event Tick
- on component begin overlap
- On Component Hit
- CameraBoom(Spring Arm)
- Get Player Character
- Nav Mesh Bounds Volume
- AI MoveTo
- Pawn
- Create Render Target 2D
- Take High Res Screenshotノード
- Sphere Reflection Capture
- Event Tickノード
- ウィジェットのキャンバスパネル
- DefaultSceneRoot
- FloatingPawnMovement
- Set World Rotation
- Event Any Damage
- Set World Rotation
- VInterp To
- Get Socket Transform
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 Spring Frameworkのアノテーション一覧
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- PHP $_SERVERとは|DOCUMENT_ROOT・PHP_SELFなど主な要素 2026-08-07 17:15:57
- PHPでのファイルアップロード方法|multipart/form-dataと$_FILES 2026-08-07 17:15:57
- Scratchのアカウントの作り方|メールアドレスとユーザー名の登録手順 2026-08-07 17:15:57
- Bluetoothとは|仕組み・BLEとClassicの違い・用途 2026-08-07 17:15:57
- Spring Bootのテスト入門|@SpringBootTestとJUnitでの単体・結合テスト 2026-08-07 17:15:57
- djangoにおけるMVCアプリケーション実装例 2026-08-07 17:15:57
- Scratch 作品の公開方法 2026-08-07 17:15:56
- 【PHPフレームワーク】Laravelの使い方 2026-08-07 17:15:56
- Google OAuth 2.0 認証の実装方法 2026-08-07 17:15:56
- APIキー取得方法 2026-08-07 17:15:56
- インストール方法(Windows版) 2026-08-07 17:15:56
- Java とは?言語仕様・JVM・主要フレームワーク一覧 2026-08-07 17:15:56
- データベースとは?RDB / NoSQL / SQL の基礎 2026-08-07 17:15:56
- インストール(eclipseプラグイン) 2026-08-07 17:15:56
- Spring Frameworkの使い方 2026-08-07 17:15:56
コメントを削除してもよろしいでしょうか?