initialize-ai-navigation について
Unity 開発向けのナビゲーションスキルで、要件の判断から設定、検証、トラブルシューティングまで案内します。既存コンポーネントを確認してから変更を提案し、一般的な NavMesh 構成を扱います。
主な機能
- 01ナビゲーション要件の振り分け
- 02NavMesh コンポーネントの調査
- 03設定計画と検証
- 04移動に関する問題の診断
- 05Unity Editor での C# 実行ガイド
活用シーン
- 01NavMesh の経路探索設定
- 02巡回やクリック移動の追加
- 03離れたナビゲーション領域の接続
- 04経路を取得できない Agent の診断
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ unity-technologies/ unity-agent-plugin --skill initialize-ai-navigationインストール後、Claude Code で/initialize-ai-navigationを入力して読み込まれたか確認します。
同梱ファイルreferences/navigation-system.md
詳細
ユーザーのニーズを把握し、ナビゲーションの設定を案内します。コンポーネントの詳細、API に関する注記、コード例、トラブルシューティングについては、navigation-system.md を参照してください。
script eval に渡す C#
script eval がコンパイルするのは、ファイルではなくステートメントブロックです。そのため、次の 2 点が原因で警告ではなくコンパイルエラーが発生します。
usingディレクティブは使用できません。 コンパイラーはusing UnityEngine;をリソース破棄ステートメントとして読み取り、拒否します(CS0210)。- 型は完全修飾名で指定する必要があります。
AssetDatabaseやVolumeをそのまま指定しても解決されず(CS0246/CS0103)、Objectをそのまま指定するとobjectと曖昧になります(CS0104)。
以下のスニペットがファイル形式で記述されている場合(読みやすさのために using を含めている場合や、プロジェクトに保存することを想定している場合)は、script eval に渡す前に型を完全修飾してください。
ルーティングロジック
| ユーザーの発言 | 解釈 |
|---|---|
| 「ナビゲーションを追加」/「ナビゲーションを設定」 | セットアップ全体:NavMeshSurface + ベイク + NavMeshAgent |
| 「このキャラクターが移動できるようにする」 | NavMeshAgent を追加し、NavMesh が存在することを確認 |
| 「経路探索を追加」 | NavMeshAgent + 移動スクリプト |
| 「エージェントが動かない」/「経路が見つからない」 | トラブルシューティング — 参照ドキュメントのトラブルシューティング決定木を参照 |
| 「障害物を避ける」 | カービングまたは回避機能を使う NavMeshObstacle |
| 「2 つのエリアをつなぐ」/「ジャンプして渡る」 | エリア間の NavMeshLink |
| 「ポイント間を巡回する」 | NavMeshAgent + 巡回スクリプト |
| 「クリックして移動」 | NavMeshAgent + レイキャストによるクリック移動スクリプト |
| 「ナビゲーション中にキャラクターをアニメーションさせる」 | Animator と NavMeshAgent を連携 |
| 「異なるエージェントサイズ」 | Navigation ウィンドウでエージェントタイプを設定 |
| 「エリアとコスト」/「エリアを制限」 | NavMesh のエリアタイプ、モディファイアー、エージェントのエリアマスク |
ワークフロー
0. パッケージのインストール確認
ほかの作業に着手する前に、com.unity.ai.navigation がインストールされていることを確認します。インストールされていない場合は、Packages/manifest.json の dependencies に追加します。Unity は次にエディターがフォーカスを取り戻したときに解決するため、エディターへの接続は不要です。
"com.unity.ai.navigation": "<current 2.x version>"
バージョン文字列を推測しないでください。Unity レジストリから現在のバージョンを読み取ります。https://packages.unity.com/com.unity.ai.navigation に公開済みの全バージョンが掲載されています。または、このマニフェスト内の隣接する Unity パッケージで使われているバージョンをコピーしてください。存在しないバージョンを指定すると、Unity は警告なしに解決に失敗するため、誤った値を指定しても何も起きなかったように見えます。
インストールが確認できてから先に進んでください。稼働中のエディターで C# を実行できる場合は、Client.Add に相当する方法について navigation-system.md を参照してください。
1. 事前確認:現在のナビゲーション設定を評価する
変更を加える前に、既存の設定を調べます。
- 既存のナビゲーションコンポーネントを探します。エディターに接続されている場合は、稼働中のエディターを操作する方法について
unity-cliスキルを参照し、ライブシーン内のNavMeshSurface、NavMeshAgent、NavMeshObstacle、NavMeshLink、NavMeshModifierを検索します。接続されていない場合は、シーンファイルとプレハブファイルからこれらのコンポーネント名を検索します。 - Window > AI > Navigation > Agents tab から、設定済みのエージェントタイプを確認します。
- 変更を提案する前に、検出したナビゲーションコンポーネントをすべて要約します。
2. 不足している情報を集める
コンポーネントを作成する前に、ユーザーから歩行可能なサーフェス、エージェントタイプ/サイズ、エージェントの動作、障害物、リンク、エリア/コストの要件が示されていることを確認します。不明な点があれば質問します。詳しくは、参照ドキュメントの「情報収集チェックリスト」を参照してください。
3. 計画と実行
以下の一般的な順序で進めます。各コンポーネントの詳細な手順については、リファレンスの「Component Setup Guide」を参照してください。
- NavMesh Surface — 歩行可能なメッシュを作成します(ベイクします)
- NavMesh Agent — 経路探索を行うキャラクターを追加します
- NavMesh Obstacle — 動的な障害物を追加します
- NavMesh Link — 接続されていない NavMesh エリアを接続します
- NavMesh Modifier / Modifier Volume — エリアタイプを微調整します
- スクリプト — 移動、パトロール、クリックで移動、アニメーションとの連携(リファレンスの「Common Recipes」を参照)
4. 検証
セットアップ後、以下を確認します。
- NavMesh がベイクされ、表示されている(青いオーバーレイ)
- NavMeshSurface のエージェントタイプが NavMeshAgent のエージェントタイプと一致している
- エージェントが目的地までの有効な経路を持っている
- 障害物が正しく経路を切り取る、または遮っている
- リンクの両端が接続され、Activated が有効になっている
- エリアマスクで意図した移動が許可されている
- 競合するコンポーネントがない(リファレンスの「Mixing Components Guide」を参照)
- Rigidbody と NavMeshAgent を併用する場合、Is Kinematic が有効になっている
5. 最終確認
作成または変更した内容をまとめます。
- NavMesh Surface:対象の GameObject、エージェントタイプ、ジオメトリモード、ベイク状態
- NavMesh Agent:対象の GameObject、速度、停止距離、エリアマスク
- NavMesh Obstacle:対象の GameObject、形状、切り取りのオン/オフ
- NavMesh Link:始点/終点、双方向かどうか、エリアタイプ
- スクリプト:どのスクリプトをどの GameObject にアタッチしたか
- 必要な手動作業(ウェイポイントの調整、シーン変更後の再ベイクなど)