ユーザーのニーズを判断し、ナビゲーション設定をガイドします。コンポーネントの詳細、APIノート、コードレシピ、トラブルシューティングについては、navigation-system.mdを参照してください。
eval に C# を渡す際の注意
eval は ファイルではなくステートメントブロック をコンパイルします。これにより以下の2つの問題が発生し、警告ではなくコンパイルエラーになります。
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 の連携 |
| "エージェントのサイズを変える" | ナビゲーションウィンドウでエージェントタイプを設定 |
| "エリアとコスト" / "エリアを制限" | NavMesh エリアタイプ、モディファイア、エージェントのエリアマスク |
ワークフロー
0. パッケージインストールの確認
何よりも先に、com.unity.ai.navigation がインストールされていることを確認してください。不足している場合は、Packages/manifest.json の dependencies に追加します。Unity はエディタがフォーカスを再取得したときに解決します。この操作にエディタ接続は必要ありません。
"com.unity.ai.navigation": "<現在の2.xバージョン>"
バージョン文字列はでっち上げないでください。現在のバージョンは Unity レジストリ(https://packages.unity.com/com.unity.ai.navigation)から読むか、このマニフェスト内の隣接する Unity パッケージがすでに使用しているバージョンをコピーしてください。存在しないバージョンを指定すると、Unity は 静かに 解決に失敗するため、間違った推測は何も起こらなかったように見えます。
インストールが確認されてから先に進んでください。ライブエディタがあり C# を実行できる場合は、navigation-system.md の Client.Add と同等の機能を参照してください。
1. 事前確認:現在のナビゲーション設定の評価
変更を加える前に、既存の設定を検査します。
- 既存のナビゲーションコンポーネントを見つけます。エディタが接続されている場合は、ライブシーン内の
NavMeshSurface、NavMeshAgent、NavMeshObstacle、NavMeshLink、NavMeshModifierをクエリします(実行中のエディタを操作するにはunity-cliスキルを参照)。接続がない場合は、シーンとプレハブファイル内でこれらのコンポーネント名を検索します。 - Window > AI > Navigation > Agents タブ で、設定済みのエージェントタイプを確認します。
- 変更を提案する前に、検出された すべての ナビゲーションコンポーネントを要約します。
2. 不足情報の収集
コンポーネントを作成する前に、ユーザーが以下を指定していることを確認します:歩行可能なサーフェス、エージェントタイプ/サイズ、エージェントの動作、障害物、リンク、エリア/コスト要件。不明な点があれば質問してください。詳細はリファレンスの「情報収集チェックリスト」を参照してください。
3. 計画と実行
以下の一般的な順序に従ってください。各コンポーネントの詳細な手順は、リファレンスの「コンポーネントセットアップガイド」を参照してください。
- NavMesh Surface — 歩行可能なメッシュを作成(ベイク)
- NavMesh Agent — 経路探索キャラクターを追加
- NavMesh Obstacle — 動的障害物を追加
- NavMesh Link — 切断された NavMesh エリアを接続
- NavMesh Modifier / Modifier Volume — エリアタイプを微調整
- スクリプト — 移動、パトロール、クリック移動、アニメーション連携(リファレンスの「一般的なレシピ」を参照)
4. 検証
セットアップ後、以下を確認します。
- NavMesh がベイクされ、表示されている(青色のオーバーレイ)
- NavMeshSurface のエージェントタイプが NavMeshAgent のエージェントタイプと一致している
- エージェントが目的地への有効な経路を持っている
- 障害物が正しくカービングまたは妨害している
- リンクの両端が接続され、Activated が有効になっている
- エリアマスクが意図した移動を許可している
- 競合するコンポーネントがない(リファレンスの「コンポーネント混合ガイド」を参照)
- NavMeshAgent と Rigidbody を併用する場合、Is Kinematic が有効になっている
5. 最終確認
作成または変更した内容を要約します。
- NavMesh Surfaces:どの GameObject、エージェントタイプ、ジオメトリモード、ベイク状態
- NavMesh Agent:どの GameObject、速度、停止距離、エリアマスク
- NavMesh Obstacle:どの GameObject、形状、カービングのオン/オフ
- NavMesh Link:開始/終了、双方向、エリアタイプ
- スクリプト:どのスクリプトがどの GameObject にアタッチされたか
- 手動で必要な手順(ウェイポイントの調整、シーン変更後の再ベイクなど)