VRChat 非公式日本語ドキュメント

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 を返しますが、これは使用できません。メソッド自体はそのまま機能するはずです。

最終更新: