AI Navigation
AI Navigation を使用すると、シーンのジオメトリから自動的に生成されるナビゲーションメッシュを利用して、ゲームワールド内をインテリジェントに移動できるノンプレイヤーキャラクター(NPC)を作成できます。Dynamic obstacles(動的障害物)を使用すると実行時にキャラクターのナビゲーションを変更できるほか、Offmesh links を使用することで、ドアを開ける、隙間を飛び越える、段差から飛び降りるといった特定の動作を構築することが可能です。
tip
AI Navigation は Unity の組み込み機能です。使用方法に関する重要な概念を理解するために、Unity の公式ドキュメントを参照してください。
Unity 2019のナビゲーション機能との違い
Unity 2022では、UnityのAIナビゲーションの動作が以前のバージョンから以下のように変更されています。
- システムがコア機能への統合型ではなく、Unityによって管理される独立したパッケージになりました。
- ランタイム生成が可能に!VRChatクライアント実行中にナビゲーションメッシュを作成・更新できるようになりました。以前はUnityエディタ上でしか行えませんでした。
- NavMesh Links と Off-Mesh Links の使い方がよりシンプルになりました。
- NavMeshの生成機能が全体的に改善され、より堅牢になりました。
- 障害物(Obstacles)を動的に扱えるようになりました。
- ワールド内で複数の NavMesh Surfaces を使用できます。
- NavMesh Surfaces、Modifiers、Modifier Volumes により、システムをより細かく制御できるようになりました。
- エリアコストがワールドデータに正しくエクスポートされるようになり、ワールド参加時に復元されるようになりました。
VRChatにおける制限事項
AI Navigationの一部の機能は、VRChatクライアントでは使用できない、または現時点では有用ではありません。
カスタムエージェントタイプ (Custom Agent Types)
Unityでは、異なるタイプのエージェントを宣言できます。これらには、Radius、Height、Step Height、Max Slopeなどに異なる値を設定可能です。この情報はワールドデータにバンドルされますが、VRChatには現時点でカスタムエージェントタイプを取得および適用するためのメソッドがありません。この機能は検討中ですが、現時点ではデフォルトのエージェントタイプを使用する必要があります。
様々なメソッドとプロパティ
NavMeshLink.agentTypeID- ランタイムベイクはカスタムエージェントでは機能しないため、あまり有用ではありません。NavMeshSurface.CollectObjects- 列挙型の配列はUdonでは利用できません。NavMeshSurface.agentTypeID- ランタイムベイクはカスタムエージェントでは機能しないため、有用ではありません。NavMeshSurface.UpdateNavMesh()- AsyncOperationを返しますが、これは使用できません。メソッド自体は機能するはずです。
最終更新: