mcpField
I
initialize-ai-navigation

initialize-ai-navigation

github.com/unity-technologies開発1.2k5.6k 回インストール1 日前に更新
リポジトリ

initialize-ai-navigation について

Unity 開発者やコーディングエージェント向けのナビゲーション設定スキルです。要件に応じた NavMesh コンポーネントを案内し、調査から設定、検証までを支援します。

主な機能

  1. 01要件に応じたナビゲーション案内
  2. 02AI Navigation パッケージの確認
  3. 03シーン内コンポーネントの調査
  4. 04NavMesh の設定と検証
  5. 05移動や巡回のレシピ

活用シーン

  1. 01キャラクターへの経路探索追加
  2. 02経路がない Agent のトラブルシューティング
  3. 03分離した NavMesh 領域の接続
  4. 04クリック移動や巡回の設定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/unity-technologies/skills --skill initialize-ai-navigation

インストール後、Claude Code で/initialize-ai-navigationを入力して読み込まれたか確認します。

同梱ファイルreferences/navigation-system.md

詳細

ユーザーのニーズを判断し、ナビゲーションのセットアップを案内します。コンポーネントの詳細、API に関する補足、コード例、トラブルシューティングについては、navigation-system.md を参照してください。

eval に渡す C#

eval はファイルではなくステートメントブロックをコンパイルします。このため、どちらの場合も警告ではなくコンパイルエラーになります。

  • using ディレクティブは使えません。 コンパイラーは using UnityEngine; をリソース破棄ステートメントとして読み取り、拒否します(CS0210)。
  • 型名は完全修飾する必要があります。 AssetDatabase や Volume だけでは解決できず(CS0246 / CS0103)、Object だけでは object と曖昧になります(CS0104)。

以下のスニペットがファイル形式で記述されている場合(読みやすさのために using を含めている場合や、プロジェクトに保存することを想定している場合)は、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 Editor が次にフォーカスを取り戻したときに解決されるため、Editor への接続は不要です。

"com.unity.ai.navigation": "<current 2.x version>"

バージョン文字列を推測してはいけません。Unity レジストリから現在のバージョンを読み取ってください。https://packages.unity.com/com.unity.ai.navigation には公開済みの全バージョンが掲載されています。または、このマニフェスト内の近接する Unity パッケージが使用しているバージョンをコピーしてください。存在しないバージョンを指定すると、Unity は何も通知せずに解決に失敗するため、誤った推測では何も起きていないように見えます。

インストールが確認できてから次に進みます。Editor で C# を実行できる場合は、Client.Add に相当する方法について navigation-system.md を参照してください。

1. 事前確認:現在のナビゲーション設定を評価する

変更を加える前に、既存の設定を調べます。

  1. 既存のナビゲーションコンポーネントを探します。Editor に接続している場合は、ライブシーンで NavMeshSurface、NavMeshAgent、NavMeshObstacle、NavMeshLink、NavMeshModifier を検索します。実行中の Editor の操作方法については unity-cli スキルを参照してください。接続していない場合は、シーンファイルとプレハブファイルからこれらのコンポーネント名を検索します。
  2. Window > AI > Navigation > Agents tab で、設定済みのエージェントタイプを確認します。
  3. 変更を提案する前に、検出されたナビゲーションコンポーネントをすべてまとめます。
2. 不足している情報を集める

コンポーネントを作成する前に、ユーザーが歩行可能なサーフェス、エージェントタイプとサイズ、エージェントの動作、障害物、リンク、エリアとコストに関する要件を指定していることを確認します。不明な点があれば質問します。詳細は、リファレンスの「情報収集チェックリスト」を参照してください。

3. 計画と実行

以下の一般的な順序で進めます。各コンポーネントの詳細な手順については、リファレンスの「Component Setup Guide」を参照してください。

  1. NavMesh Surface — 歩行可能なメッシュを作成します(ベイクします)
  2. NavMesh Agent — 経路探索を行うキャラクターを追加します
  3. NavMesh Obstacle — 動的な障害物を追加します
  4. NavMesh Link — 接続されていない NavMesh エリアを接続します
  5. NavMesh Modifier / Modifier Volume — エリアタイプを微調整します
  6. スクリプト — 移動、パトロール、クリックで移動、アニメーションとの連携(リファレンスの「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 にアタッチしたか
  • 必要な手動作業(ウェイポイントの調整、シーン変更後の再ベイクなど)

コメント