ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
Nav Mesh とは
Nav Mesh (ナビゲーションメッシュ) は、AI キャラクターがどこを歩けるかを示す地形データです。UE5 では Recast アルゴリズムが使われており、レベル形状から自動生成されます。AI MoveTo、AI Navigation、Behavior Tree の MoveTo タスク等は、すべてこの NavMesh の存在を前提に動作します。
Nav Mesh Bounds Volume の役割
NavMesh はNav Mesh Bounds Volume の内側だけに生成されます。レベル全体に NavMesh を貼るには、レベルを覆う巨大なボリュームを置く必要があります。
手順1: ボリューム配置
- UE5 エディタ上部の Window → Place Actors(または左パネル)を開く
- カテゴリから Volumes を選択
- Nav Mesh Bounds Volume を Viewport にドラッグ&ドロップ
- Details パネルで Brush Settings の X / Y / Z サイズを調整
- レベル全体を覆うように位置・サイズを修正
手順2: 生成確認
ボリュームを置くと自動的に RecastNavMesh アクタもシーンに生成されます (Outliner で確認可能)。
| 操作 | 結果 |
|---|---|
| P キー (Viewport で押す) | NavMesh 可視化 ON/OFF(緑色で表示) |
| Build → Build Paths | NavMesh を再生成 |
| Build → Build All Levels | 全レベル再ビルド |
| Show → Navigation | Viewport 表示メニューから切替 |
RecastNavMesh の主要パラメータ
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 | 用途次第 |
静的 vs 動的 NavMesh
| モード | 用途 | 負荷 |
|---|---|---|
| Static | レベル形状が変わらないゲーム(FPS の固定マップ) | 軽い |
| Dynamic | 破壊・建築・移動床がある(Fortnite, Minecraft 系) | 重い |
| Dynamic Modifiers Only | NavModifier の領域だけ動的に変える | 中 |
Project Settings → Navigation Mesh → Runtime Generation で切替。
複数ボリュームで広域カバー
1 つの巨大ボリュームを置くより、必要なエリアごとに複数の中型ボリュームを置く方が:
- NavMesh の生成範囲を絞れる → メモリ節約
- 不要な空中・地下まで生成されない
- Open World ではWorld Partition の Cell 単位で配置可能
NavMesh が生成されないケース
| 症状 | 原因 | 対処 |
|---|---|---|
| ボリュームを置いても緑色が出ない | 下に地面がない / 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 を設定 |
Project 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
NavModifier Volume との組み合わせ
「ここは AI が通れない」「コストが高い」を表現するのが Nav Modifier Volume:
Place Actors → Volumes → Nav Modifier Volume を配置
Details → Area Class:
- NavArea_Default : 通れる
- NavArea_Null : 通れない (穴扱い)
- NavArea_Obstacle : 障害物
- NavArea_LowHeight : 低い天井
- 自作 NavArea クラス : カスタムコスト
AI 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*) が走る
Open 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 を設定
(近くで生成、遠ざかれば破棄)
パフォーマンス指針
- Cell Size が小さいほど精度↑・生成時間↑・メモリ↑
- 大半のゲームでは Cell Size = 19(デフォ)で十分
- Dynamic モードは Static の数倍重い。本当に必要なときだけ
- Open World は Navigation Invoker 必須
- 不要な空中・地下にボリュームを広げない
FAQ
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 と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?