Nexus Lab. Blog

オブジェクトを選択し、マウスで移動させる

f:id:nexusyuumilo:20180112172021j:plain

マウスでユニットを動かせるようにできたのでメモ

 

f:id:nexusyuumilo:20180112173021p:plain  Ethan

Ethan(動かしたい人)にコンポーネントのNavMeshAgentをつける

WindowのNavigationを開き、Bakeをする

  • Bakeで移動可能な場所を自動的に設定してくれる
  • Agentのタイプごとにいろいろ設定できる
  • 障害物にはオブジェクトのstaticのNavigatoin Staticにチェック

コンポーネントの設定

  • Auto Brakingは目的地に近づくとゆっくりになるらしい
  • QualityをNoneにするとAgent同士の衝突を避けられる
  • Priorityが高い奴は低い奴を押しのけて進める
  • Auto Repathは曲がり角とかに行く度再度経路を計算してくれる(?)

あとは目的地(destination)を指定してあげるだけで勝手に障害物を避けながら移動してくれる

using UnityEngine.AI;

//目的地を指定する

オブジェクト.GetComponent<NavMeshAgent>().destination = 目的地の座標;

 次にマウスでクリックした地点の座標を読み取り、そこにEthanを移動させる

 Ray(マウスの座標) 

Rayでマウスで右クリックした場所の座標を取得

destinationに代入

次に左クリックしたオブジェクトの目的地を指定する

 ユニットを取得

面倒なので丸ごとコピペしたから汚いけど

頑張って読んでみてw(未来の自分へ)

何をやってるかというと

  • 左クリックしたら範囲を指定できる(ドラッグの開始地点から終了地点の大きさの直方体をつくる)
  • そのオブジェクトにTriggerをつけておくとTriggerに引っかかったオブジェクトを取得できる
  • 右クリックで移動させる
  • Units(Unitをいっぱい入れる) > EthanUnit(Unitタグ) > Ethan * 3っていうhierarchy

    f:id:nexusyuumilo:20180112183917p:plain

https://twitter.com/nekusasuyuueigo/status/951718904883167232

次からは綺麗なコード、コメントもちゃんと書いて読み返しやすいようにする