Unity3.5の新機能、「NavMesh」に挑戦するヨ! その2

前回まででマップとキャラクターの下準備が出来たので、Navmeshの機能を使っていくヨ!

■キャラクターの移動範囲を設定(NavmeshをBake)

キャラクターの移動範囲を設定。
この範囲で設定した範囲内をキャラクターは移動することになる。
今までは、この作業を手作業で行なっていたらしい。
(もしくはAIが判断?マップチップで探索?どちらにしても資産がなきゃ大変)

さて、どうやってやるのか。
Windowを選択し、Navigationをクリック
NAVMESH.jpg

するとInspectorの隣にNavigationタブが表示されるので、Bakeをクリック
ちなみにObjectの隣にあるBakeは、マップの詳細設定が出来るらしい。
ジャンプ距離だったり、落下可能かどうかだったり、あと登れる傾斜角度の設定だったり。

ベイク

まあ実行されると、マップの上に青い面が表示され、移動ルートが設定される。
マップが途切れていたり、角度が急すぎたりすると、上手くルートが形成できない模様。
そこらへんは、こっそりステップ可にしたりマップ微調整に命かけたりして回避すればOK。

ルート作

■キャラクターを移動させる

最後にキャラクターを移動させる。
必要なことはNavmesh Agentを適応する事と、ゴールを設定するスクリプトを実行すること。

まずはNavmesh Agentの適応
適応対象は空のオブジェクト。理由は前回書いたとおり。
ここを間違えると前回書いたとおりにメッシュが半分埋まって面白い動きになる。

NAVMESHA.jpg

次のスクリプト書いて適応。
これも同じく空オブジェクトに。


public GameObject Target;

void Start () {
 GetComponent().SetDestination( Target.transform.position);
}

で、最後にTargetにゴールオブジェクトを参照するように設定
やり方はInspectorの設定にD&DでもソースでFindしても。

これで動くはず。

今回は動作確認画面は無し。
なぜかこの機能を使った記事を書こうとすると
PCが落ちたりスリープから復帰しなかったりUnityが最小化から復帰しなかったりするんですよねーHAHAHAHA

ちなみにこの機能、Rigidbodyとは別の力で動いてるので、物理現象を無視する模様。
何も設定しないと、常時スーパーアーマーで移動するので。
そのつもりで。

調査対象を募集中 フォローボタン