ここではオフメッシュリンク(OffMeshLink)の作り方について説明します。
※この記事で使用しているUnityのバージョン:Unity2019.1
オフメッシュリンク(OffMeshLink)とは
オフメッシュリンク(OffMeshLink)は、簡単に言えばナビメッシュエージェントが高い段差や穴などを飛び越えられるようにするための接続点のようなものです。これを設定することで、ナビメッシュエージェントが通常のナビゲーションでは探索できない経路をたどることができるようになります。
オフメッシュリンク(OffMeshLink)の作り方
それでオフメッシュリンクを作る方法は自動と手動の2通りがあります。どちらもメリット・デメリットがあるので上手く使い分けるようにしてください。
自動でオフメッシュリンクを作る方法
一つ目は自動でオフメッシュリンクを作る場合です。手順は次の2ステップがあります。
- オフメッシュリンクを生成したいゲームオブジェクトの「静的」オプションで「オフメッシュリンク生成を静的にする(OffMeshLink Static)」にチェックを入れる
- ナビゲーションウィンドウで落下の高さとジャンプの距離を設定する
手順1:「静的」オプションで「オフメッシュリンク生成を静的にする」にチェックを入れる
まず、オフメッシュリンクを自動生成したいゲームオブジェクトを選択し、インスペクターの右上にある「静的」オプションの右側の下矢印をクリックして「オフメッシュリンク生成を静的にする」にチェックを入れてください。
そこにチェックが入っていないとオフメッシュリンクが自動生成されないので注意しましょう。
手順2:ナビゲーションウィンドウで落下の高さとジャンプの距離を設定する
次にナビゲーションウィンドウ(メニューバー→ウィンドウ→AI→ナビゲーション)を開き、「ベイク」タブを選択して「生成されたオフメッシュリンク」のところの
- 落下の高さ
- ジャンプの距離
をそれぞれ設定します。「Bake」をクリックすると設定した値の範囲内でオフメッシュリンクが生成されます。
この方法のメリットは当然ながらオフメッシュリンクを手軽に作れることです。逆にデメリットとしては意図しない場所にオフメッシュリンクができてしまう点や、段差を飛び越えるようなオフメッシュリンクは作れない点があります。
手動でオフメッシュリンクを作る方法
もう一つ、手動でオフメッシュリンクを作る方法もあります。手順は次の通りです。
- 適当なゲームオブジェクトにオフメッシュリンクコンポーネントをアタッチする
- 「開始」と「終了」にオフメッシュリンクを生成するゲームオブジェクトのトランスフォームを登録する
ここでは例として、空のゲームオブジェクトを2つ用意してそれぞれを繋ぐようなオフメッシュリンクを作ってみます(下図)。
手順1:オフメッシュリンクコンポーネントをアタッチする
まずは適当なゲームオブジェクトにオフメッシュリンクコンポーネントをアタッチします。ここでは空のゲームオブジェクトを2つ用意して、それぞれにオフメッシュリンクコンポーネントをアタッチしました。
手順2:「開始」と「終了」にゲームオブジェクトのトランスフォームを登録する
次にオフメッシュリンクコンポーネントの「開始」と「終了」に各ゲームオブジェクトのトランスフォームを登録していきます。
ここでは「開始」にそのゲームオブジェクト自身を、「終了」にもう一方のゲームオブジェクトを登録しました。
できたらナビゲーションウィンドウを開いて、オフメッシュリンクがきちんと生成されていることを確認してください。これでオフメッシュリンクを作ることができました。
この方法のメリット・デメリットは自動生成の場合の逆です。いちいちオフメッシュリンクを作るのは面倒ですが、手動生成なら段差を飛び越えるオフメッシュリンクを作れたり、好きな位置にオフメッシュリンクを作ることができたりします。