敵キャラクターをプレイヤーへ向かわせる最初の実装は、たいていtransform.positionをプレイヤーへ直進させるコードです。そして最初のバグもすぐ来ます—— 敵が壁に引っかかったまま、こちらをじっと見ている。
壁や障害物を避けて目的地への最短ルートを自分で見つける——この 経路探索(Pathfinding) をUnityで実現する標準機能がNavMesh(ナビゲーションメッシュ) です。この記事では、NavMeshのベイクから追跡AI、そして「巡回→発見→追跡」の実践パターンまでを解説します。
この記事でわかること
- NavMeshシステムの3点セット: NavMesh/NavMesh Agent/NavMesh Obstacle
- NavMeshSurface でのベイク(Unity 6の現行ワークフロー)
SetDestination()だけで動く追跡AI- 巡回→発見→追跡→捜索——見失っても粘る、実戦的な敵AIパターンの組み立て
remainingDistanceでの到着判定と、動かないときに見る3つの計器
NavMeshシステムの3点セット
NavMeshシステムは3つの登場人物で構成されます。「地図」「旅人」「通せんぼ」 と覚えるのが早道です。

- NavMesh(地図): AIが移動可能なエリアを示す多角 形メッシュ。シーンのジオメトリから自動生成(ベイク)されます。
- NavMesh Agent(旅人): NavMesh上を移動する能力を持つコンポーネント。目的地を渡すと、経路計算・移動・他エージェントとの衝突回避まで自動でこなします。
- NavMesh Obstacle(通せんぼ): 動的な障害物用のコンポーネント。閉じたドアや倒れた柱などに付けると、エージェントが迂回するようになります。
Step 1: NavMeshをベイクする(NavMeshSurface)
現行のUnity(2022.3以降/Unity 6)では、AI NavigationパッケージのNavMeshSurfaceコンポーネントを使うのが標準ワークフローです。
tips: 古いチュートリアルにある「
Window > AI > NavigationウィンドウでNavigation Staticを設定してBake」という手順はレガシー版です。考え方は同じですが、これから作るプロジェクトではNavMeshSurfaceを使いましょう。
- パッケージの確認:
Window > Package Managerで AI Navigation(com.unity.ai.navigation)がインストールされていることを確認します(Unity 6では通常デフォルトで入っています)。 - NavMeshSurfaceの追加: 地面となるオブジェクト(または空のGameObject)に
NavMeshSurfaceコンポーネントを追加します。 - ベイク対象の指定:
Collect Objectsで対象範囲(All Game Objectsなど)を選びます。壁や障害物もジオメトリとして収集され、「通れない場所」として反映されます。 - ベイク実行: Inspectorの
Bakeボタンを押すと、シーンビューに青いポリゴンが表示されます。これがAIの歩ける範囲です。

ベイク設定はエージェントの「体格」
ベイク設定の実体は、「どんな体格のキャラが通れる地図を作るか」 です。
Agent Radius: エージェントの半径。これより狭い隙間は通行不可になります。Agent Height: エージェントの身長。これより低い天井の下は通行不可になります。Max Slope: 登れる坂の最大角度。Step Height: 乗り越えられる段差の高さ。
「敵が狭い通路を通ってくれない」ときは、たいていAgent Radiusが通路幅に対して大きすぎます。
Step 2: NavMesh Agentの設定
AIキャラクターにAdd Component > Navigation > NavMesh Agentを追加し、移動の性格をInspectorで決めます。
| プロパティ |
|---|