デジタルフロッグ

Unityのアプリの開発をしながらいろいろと忘れないための備忘録でございます。

NavMeshを使って指定した場所に移動させる方法その2

昨日に続いて今日もNavMeshについて書いていきたいと思います。

まず移動させたい床を準備して下さい。

自分は3DオブジェクトのCubeを平べったく伸ばして使いました。

f:id:karaagedigital:20160916155431p:plain

それでInspectorの右上にあるStaticですが、これにチェックを入れて下さい。

次にWindowからNavigationを選択して下さい。

f:id:karaagedigital:20160916155633p:plain

そうするとInspectorの隣の方にNavigationというタブが出てくると思います。

f:id:karaagedigital:20160916155830p:plain

ここで登れる坂の角度や、段差などの設定もできます。

とりあえず今回は平面のCubeをつかっているのでそのまま右下のBakeボタンを押しましょう。

f:id:karaagedigital:20160916160027p:plain

そうするとCube(床の方)がこんな感じで青くなります。

続いて移動させたいオブジェクトのInspectorにNavMeshコンポーネントを追加します。

f:id:karaagedigital:20160916160300p:plain

それではそのままAddComponentからScriptを追加していきます。

public GameObject Target;

void Start(){

GetComponent<NavMeshAgent>().SetDestination(Target .transform.position);

}

これを書いて保存してInspectorのTargetにTargetにしたいものをアタッチします。

f:id:karaagedigital:20160916160912p:plain

ではこれで動かしてみましょう!

f:id:karaagedigital:20160916161044g:plain

こんな感じでターゲットに向かってあるいてくれたと思います。

ちなみに・・・

f:id:karaagedigital:20160916161832g:plain

こんな感じで曲がり角があっても上り坂があってもちゃんと到着してくれます。

ちなみにターゲットの赤い棒がうにうに動いてるのはHPゲージ的なのを作っているのですが、2Dゲージなので、横から見るとペラペラになります。

なのでカメラに対して常に正面向くように設定しています。