【Unity】NavMeshAgentの経路を動的にベイクする方法
どうも、だらはです。
今回は、NavMeshAgentの経路を動的にベイクする方法を紹介します。
実装方法
具体的な実装手順は以下の通りです。
- [Window -> AI -> Navigation -> Bake]のリンク「Learn instead about the component workflow」より、ファイル一式をダウンロードする。(参考①)
- 1のファイルより、「Gizmos」「NavMeshComponents」をUnityのAssets直下にインポートする。
- 空のGameObjectを生成し、「NavMeshSurface」と「Sample.cs」スクリプトをアタッチする。(参考②)
◆Sample.csスクリプト
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class Sample : MonoBehaviour
{
void Start()
{
GetComponent<NavMeshSurface>().BuildNavMesh();
}
}
◆参考①
◆参考②
補足ですが、従来はNavigationウィンドウよりBakeしていましたが、動的にBakeする場合は事前のBakeは不要となります。
とはいえ、NavigationウィンドウのAgentsとAreasは引き続き使用しますので、忘れずに設定する必要があります。
最後に
いかがでしたでしょうか。
今回はNavMeshAgentの経路を動的にベイクする方法をまとめました。
GetComponent<NavMeshSurface>().BuildNavMesh();
このスクリプトにより動的にビルドが可能ですので、適宜スクリプトに組み込んでみて下さい。
以上、だらはでした。
追記:2024/12/13
Unityのバージョン更新に伴い、NavMeshSurfaceが公式にサポートされます。
転換点となるバージョンは不明ですが、Unity6では対応されています。(本記事の手順が不要となる)
ただし、インポートするパッケージが変わるため注意が必要です。
前:using UnityEngine.AI;
後:using Unity.AI.Navigation;
以上、だらはでした。
ディスカッション
コメント一覧
まだ、コメントがありません