ナビメッシュの作成
NavMesh Agent の作成

NavMesh Bake の詳細設定

最小の Region Area

詳細設定の Min Region Area で、NavMesh の最小領域を設定することができます。指定した値よりも小さな NavMesh の領域は削除されるようになります。

Min Region Area を設定しているにもかかわらず、一部のエリアで NavMesh が削除されないことがあるので注意してください。NavMesh は、タイルのグリッドのように平行に構築されます。エリアがタイルの境界をまたぐ場合、エリアは削除されません。この理由は、エリアの剪定は、周囲のタイルがアクセスできないビルドプロセスの段階で起こることがあるからです。

ボクセルサイズ

マニュアルボクセルサイズは、ベイクプロセスが動作する精度を変更することができます。

NavMesh ベイク処理は、任意のレベルのジオメトリから NavMesh をビルドするためボクセル化を行います。アルゴリズムの最初の段階で、シーンがボクセルにラスタライズされ、歩行可能な面が抽出されます。最終的に、この歩行可能な面が NavMesh になります。ボクセルサイズは、最終的にできる NavMesh がどのくらい正確に作成されるかの指標となります。

エージェントの半径あたり 3 個のボクセルがあるようにデフォルトの精度が設定されています。つまり、全部のエージェントの幅は 6 ボクセルです。これは、精度とベイク速度との間の良好なトレードオフです。ボクセルサイズを半分にすると、メモリ使用量が4倍に増加し、それはシーンをビルドするために4倍長く時間がかかります。

通常、ボクセルサイズを調節する必要はありません。これが必要になる場面は2つあり、エージェントの半径が小さすぎる 時と、さらに精密に NavMesh をビルドする 時です。

Agent Radius をより小さくする

人為的にエージェントの半径を小さくしてベイクするとき、NavMesh のベイクシステムは、ボクセルサイズを小さくします。他のエージェントの大きさが同じままであれば、その NavMesh ビルドの解像度を大きくする必要はありません。

ボクセルサイズを変更しない簡単な方法は次のとおりです:

  1. Agent Radius を実際のエージェントの半径に設定します。
  2. Manual Voxel Size にチェックを入れ、現在のボクセルサイズを固定します。
  3. Manual Voxel Size をチェックを入れていると、Agent Radius の値を小さくしてもボクセルサイズは変更されません。

より正確な NavMesh

シーン内に細かな部分が多い場合、ボクセルサイズを小さくして精度を向上させる必要が出てきます。Voxel Size の下に表示されているテキストはエージェントの半径に対するボクセルサイズを表しています。調度よいボクセルサイズの範囲は 2–8 です。また、ボクセルサイズを小さくすることでビルド時間は通常よりも長くなります。

意図的に自分のゲームで狭い回廊を構築するとき、特に回廊に坂がある場合は、エージェントの半径に加えて、少なくとも 4 * voxelSize のクリアランスを残す必要があることに注意してください。

NavMesh ベイクがサポートできる範囲よりも小さな回廊が必要な場合、Off-Mesh Links を使うことを検討してください。これらは、オフメッシュリンクが使用されたとき、または、例えば、特定のアニメーションを再生する瞬間を検出できるという付加的な利点があります。

参考文献

ナビメッシュの作成
NavMesh Agent の作成