NavMesh Agent を他のコンポーネントと共に使う
ナビメッシュ障害物

ナビメッシュエージェント

NavMeshAgent コンポーネントは、相互に回避しながら目的地点に向かって進行するキャラクターの作成に利用できます。エージェントはナビメッシュを使ってゲーム世界の状況を判断し、それに基づき他のエージェントや障害物を回避することができます。経路探索や空間の判断は、ナビメッシュエージェントのスクリプト API によって行われます。

プロパティー

プロパティー 機能
Agent Size
Radius エージェントの半径、障害物や他のエージェント間の衝突の計算に使用されます
Height エージェントの高さ、頭上にある障害物の下を通り抜ける計算に使用されます
Base offset トランスフォームピボットポイントに対するコリジョンシリンダー(円筒)のオフセット
Steering
Speed 動きの最高速度(単位: メートル/秒)
Angular Speed 回転の最高速度(単位: 度/秒)
Acceleration 最高加速度(単位: メートル/秒の 2 乗)
Stopping distance ゴール位置、この設定距離まで近づいたらエージェントが停まります
Auto Braking 有効になっていると、目的地点の到着時にエージェントの移動速度が減速します。巡回のような、エージェントが複数のポイント間をスムーズに移動する必要がある場合には無効にする必要があります。
Obstacle Avoidance (障害物回避)
Quality 障害物回避の品質 エージェントの数が多い場合には障害物回避の品質を落とすことで CPU 時間を節約することができます。回避を None に設定するとエージェント同士が衝突しなくなりますが、他のエージェントが障害物を積極的に回避するようになるわけではありません。
Priority エージェントは、この数値より低いエージェントを無視して回避するようになります。値は 0 ~ 99 の間で設定し、数字が小さいほど優先度が高いことを意味します。
Path Finding (経路の探索)
Auto Traverse OffMesh Link オフメッシュリンクを自動で越えるようにしたい場合はオンにしてください。オフメッシュリンクを越えるのにアニメーションなどの特定の方法を使用したい場合はオフにしてください。
Auto Repath 有効になっていると、エージェントは部分的な経路の終了地点へ到達した際に、再度経路の探索を行います。目的地への経路がない場合は、目的地にもっとも近い到達可能場所への部分的な経路が作成されます。
Area Mask Area Mask は、エージェントが経路を探索する際にどのナビゲーションエリアとコスト を確認するかを設定します。ナビメッシュのメッシュをベイクする際に、各メッシュにエリアタイプを設定できます。例えば、階段を特殊なエリアタイプでマスクし、一部のキャラクターはその階段を使えないようにしたりすることが可能です。

説明

エージェントは直立円柱形(シリンダー)で定義されます。円柱の大きさは RadiusHeight プロパティーで指定できます。この円柱はオブジェクトとともに動きますが、オブジェクト自体が回転しても常に直立状態を保ちます。円柱の形が、他のエージェントや障害物との間の衝突の検知やそれに対する反応に使用されます。ゲームオブジェクトのアンカーポイントが円柱の底部に位置しない場合、Base Offset プロパティーを使用して高さの差を調節することができます。

円柱の高さと半径の設定は、2 ヶ所 で行えます。ナビメッシュの作成か個々のエージェントのプロパティーから設定が可能です。

  • NavMesh Bake 設定では、すべてのナビメッシュエージェントの、静的ワールドジオメトリ(地形)における衝突と回避のパターンを設定できます。メモリーの使用量や CPU 負荷を抑えるため、ベイクの設定ではひとつのサイズのみ設定可能になっています。
  • NavMesh Agent プロパティーの値は、動く障害物や他のエージェントとの衝突のしかたを設定できます。

エージェントのサイズは、よっぽどのことがない限り 2 ヶ所とも同じ値にします。ただし、例えば、重量のある兵士がいる場合、半径を大きくし他の兵士がぶつからないようにしなければいけません。そうしなければ回避パターンに支障が出てきます。

参考文献

NavMesh Agent を他のコンポーネントと共に使う
ナビメッシュ障害物