AI Navigation
AI Navigationを使用すると、シーンのジオメトリから自動生成されるナビゲーションメッシュを用いて、ゲームワールド内をインテリジェントに移動するノンプレイヤーキャラクター(NPC)を作成できます。Dynamic obstacles(動的障害物)により、実行時にキャラクターのナビゲーションを変化させることが可能です。また、Off-mesh linksを使用することで、ドアを開ける、隙間を飛び越える、崖から飛び降りるといった特定の動作を組み込むことができます。
ヒント
AI NavigationはUnityの組み込み機能です。使い方の重要な概念を理解するために、Unityの公式ドキュメントをお読みください。
Unity 2019のナビゲーション機能との違い
Unity 2022では、以前のバージョンと比較してAI Navigationの仕組みが以下のように変更されています。
- このシステムはコア機能への統合型から、Unityが管理する個別のパッケージへと変更されました。
- ランタイム生成に対応しました!VRChatクライアントの実行時にナビゲーションメッシュを作成・更新できるようになりました。これまではUnity Editor上でしか実行できませんでした。
- NavMesh Links および Off-Mesh Links は、より簡単に使用できるようになりました。
- NavMeshの生成は全体的に改善され、より堅牢になりました。
- 障害物(Obstacles)は動的に設定できるようになりました。
- ワールド内で複数の NavMesh Surfaces を使用できます。
- NavMesh Surfaces、Modifiers、および Modifier Volumes を使用することで、システムに対してよりきめ細やかな制御が可能になりました。
- エリアコストはワールドデータに正しくエクスポートされ、ワールドへの参加時に復元されるようになりました。
VRChatにおける制限
AI Navigation の機能の中には、VRChat クライアントでは使用できないものや、現時点では役に立たないものがあります:
カスタムエージェントタイプ
Unity ではさまざまなタイプのエージェントを宣言でき、それぞれに対して半径(Radius)、高さ(Height)、段差の高さ(Step Height)、最大傾斜(Max Slope)などの値を個別に設定可能です。この情報はワールドデータにバンドルされますが、VRChat には現時点でカスタムエージェントタイプを取得・適用するメソッドがありません。この機能は検討中ですが、現時点ではデフォルトのエージェントタイプを使用してください。
各種メソッドおよびプロパティ
NavMeshLink.agentTypeID- ランタイムでのベイクはカスタムエージェントに対しては機能しないため、あまり役に立ちません。NavMeshSurface.CollectObjects- 列挙型(Enum)配列は Udon では使用できません。NavMeshSurface.agentTypeID- ランタイムでのベイクはカスタムエージェントでは機能しないため、役に立ちません。NavMeshSurface.UpdateNavMesh()-AsyncOperationを返しますが、これは使用できません。メソッド自体はそのまま機能するはずです。
最終更新: