Off-mesh Link の作成
正確にキャラクタを配置するための Height Mesh ビルディング

オフメッシュリンクの自動生成

一部のオフメッシュリンクは自動で認識されます。そのうち最も一般的な2つは Drop-DownJump-Across です。

  • Drop-Down リンクは、足場から落下させるために作成します。
  • Jump-Across リンクは、溝を飛び越えさせるために作成します。

自動的にジャンプする地点を見つけるために、ビルドの工程で NavMesh の端が探査され、 NavMesh 上にジャンプの着地点があるかどうかが、チェックされます。ジャンプの軌道が遮られていない場合は、オフメッシュリンクが作成されます。

オフメッシュリンクの自動生成をセットアップしましょう。 NavMesh のベイクに慣れていないなら、 ナビメッシュの作成 を参照してください。

まず、シーン内の、オブジェクトがジャンプを 開始できる 場所を、マークする必要があります。これは、 Navigation Window の下にある Objects タブの Generate Off-Mesh Links オプションをチェックすることで行います。

次に、Drop-Down と Jump-Across の軌道を設定します。

  • Drop-Down リンクの生成は、 rop Height パラメーターで制御されます。このパラメーターは落下の高さの最高値を設定するもので、値を 0 にすると生成が行われなくなります。
    • Drop-Down リンクの軌道は、水平移動 (A)2*agentRadius + 4*voxelSize になるように定義されています。つまり落下後の着地点は、足場のふちを少しだけ外れた位置になっています。また垂直移動 (B) は、ベイク設定の Step Height よりも大きく_Drop Height_ よりも小さい値になっている必要があります。ボクセル化の過程で発生し得る丸め誤差によってリンクの生成が阻まれることのないよう、ボクセルサイズによる調整が行われます。Drop Height は、ステージ上で計測される値よりも若干大き目の値に設定すると、リンクが適切に接続されます。
  • Jump-Across リンクの生成は Jump Distance パラメーターで制御されます。このパラメーターは接続の最長距離を設定するものです。値を 0 にすると生成が行われなくなります。
    • Jump-Across リンクの軌道は、水平移動 (A)2*agentRadius よりも大きく Jump Distance よりも小さくなるように定義されています。また、着地点 (D) は、開始位置の高さから voxelSize 以上高くなってはいけません。

これでオブジェクトのマーキングと設定の調整が完了しました。Bake を押せばオフメッシュリンクが自動生成されます。シーンを変更してベイクを行うたびに、古いリンクは破棄され、新しいシーンに応じて新しいリンクが作成されます。

トラブルシュート

オフメッシュリンクが思い通りの場所に生成されない場合は、以下をご確認ください。

  • Drop Height はステージで実際に計測される距離よりも若干大きい値にする必要があります。そうすることで、ナビメッシュのベイク過程で発生する微小な偏差によってリンクの接続が阻まれるのを防ぐことができます。
  • Jump Distance はステージで実際に計測される距離よりも若干大きい値にする必要があります。Jump Distance は、ナビメッシュ上の特定の位置からもうひとつの位置までの距離です。つまり、確実に溝を越えるようにするには、2*agentRadius (プラスもう少し)を加える必要があります。

参考文献

Off-mesh Link の作成
正確にキャラクタを配置するための Height Mesh ビルディング