5回目・NavMeshPathとは何ぞや?
目次
- 分かったこと1・「NavMeshPath」は「NavMeshAgent」の中にある
- 分かったこと2・「NavMeshPath.corner」の扱いとVector3の使い方
- 分かったこと3・「NavMeshAgent.destination」を設定してもすぐには「NavMeshPath.corner」は作られない
- 分かったこと4・「NavMeshPath.corner」は自動更新されない
Unityの公式サイトのここを読んでみると、
http://docs.unity3d.com/ja/current/ScriptReference/NavMeshPath.html
移動方向の矢印を作るにはNavMeshPathのcornersを使うことになりそうなことまでは把握した。
ただ、その他のことは全く書いてないので手探りで理解することに。
分かったこと1・「NavMeshPath」は「NavMeshAgent」の中にある
public NavMeshAgent agent;
agent = GetComponent<NavMeshAgent>();
NavMeshPath path = agent.path;
これと
NavMeshPath path;
これは全く一緒らしい。
agentをpublicしたってとこは違うけどほぼ一緒のことをやってるらしい。
分かったこと2・「NavMeshPath.corner」の扱いとVector3の使い方
public Vector3 corners;
とUnityのサイトのNavMeshPath.cornerには書いてあるけど、
これは「corners」はVector3で書かれているってことを示しているらしい。
Vector3[]は、
Vector3[n] = (x, y, z)みたいな感じで作られていて、
Unityのサイトの感じでpath.corners [0]のxだけを参照したい時は、
path.corners [0].xとすればいいっぽい。
分かったこと3・「NavMeshAgent.destination」を設定してもすぐには「NavMeshPath.corner」は作られない
「NavMeshAgent.destination」設定後すぐに「NavMeshPath.corner」を参照しようとすると、そんなもんないと言われます。
「NavMeshAgent.hasPath」を確認することでこれが回避できます。
分かったこと4・「NavMeshPath.corner」は自動更新されない
「NavMeshAgent.destination」を設定してPlayerが移動中の場合、「NavMeshPath.corner」はどうなっているかというと、
全く更新されません。
始点と終点は直線上にあるときだと、corner[0]に始点の座標、corner[1]に終点の座標が書いてあるだけです。
「NavMeshAgent.destination」を新しく設定すれば更新されます。