NavMesh」タグアーカイブ

UnityでNavMeshの使い方

1. Blenderとかで作成したMeshをUnityに配置します。

2. Navigation Staticに変更します。

3. Bakeします。

4. 適当なオブジェクトを配置してNavMeshAgentのコンポーネントを追加します。

5. 後は、自由にプログラミングして使ってください。

例えば、次のような感じにするとNavMeshAgentを目的地(destination)まで移動させることができます。

public class Example : MonoBehaviour
{
  void Start()
  {
    var agent = GetComponent<NavMeshAgent>();
    agent.destination = new Vector3(4f, 0f, -4f);
  }
}
NavMeshの動作サンプル

障害物を設置したい時はcarving=trueにしたNavMeshObstacleを配置します。

NavMeshObstacleの動作サンプル

NavMeshObstacleは実行中にも移動することができます。
いろいろ試して遊んでみてください。

リンク

Unity – Scripting API: NavMesh
https://docs.unity3d.com/ScriptReference/AI.NavMesh.html

動的にNavMeshを生成できるUnityのアセット

UnityでNavMesh使っていますか?

とても便利なツールですが、予めBakeしておく必要があり、動的に生成するマップで使い難いという難点がありました。そこで悩んでいたところ、動的に生成したMeshでも利用可能なアセットが公開されているそうです。

GitHub – Unity-Technologies/NavMeshComponents: High Level API Components for Runtime NavMesh Building
https://github.com/Unity-Technologies/NavMeshComponents

ドキュメントはこちら。

NavMeshComponents/Documentation at master · Unity-Technologies/NavMeshComponents · GitHub
https://github.com/Unity-Technologies/NavMeshComponents/tree/master/Documentation

スマートフォンで動作させる場合は負荷が気になるところですが、とりあえず自分の環境では動いているようでした。

リンク

Unity – Scripting API: NavMesh
https://docs.unity3d.com/ScriptReference/AI.NavMesh.html