試そう試そうと思いながら数年経ってしまった。・゚・(ノ∀`)・゚・。
やっと実験しました
マウスでクリックした場所にエージェントが向かう。
壁を動かしても経路変更に対応して移動できる
マウスでクリックしたら改めてNavMeshをbakeし直してます。
navMeshの経路の細さとか登れる坂の角度とかはいままで通りNavigationタブの中で指定します
が、そこで焼きません
オブジェクトをstaticにする必要もありません
(staticにしてmeshが変な風に固まって何度泣かされたことか? あとなぜか2階と1階に移動できる経路が勝手にできたり)
焼くのはNavMeshSurfaceの中のbakeか、スクリプトからです。
複雑な経路だとある程度時間がかかるかもしれないので、焼き終わったかは監視した方がいいかもしれませんね
NavMeshSurface NavSur;
NavMeshAgent navAgent;
Animator anim;
Vector3 targetPosition;
void Start()
{
NavSur = GameObject.Find("/Main").GetComponent<NavMeshSurface>();
navAgent = GetComponent<NavMeshAgent>();
anim = GetComponent<Animator>();
anim.SetFloat("speed", 0f);
}
void Update()
{
if (Input.GetButtonDown("Fire1"))
{
NavSur.BuildNavMesh();
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 50f))
{
targetPosition = hit.point;
navAgent.SetDestination(targetPosition);
anim.SetFloat("speed", 1f);
}
}
}動的な経路探索焼きこみができると様々な用途で使えるので夢が広がります。・゚・(ノ∀`)・゚・。
SGSでは家具屋で家の壁を買えますが、あれはあくまで障害物なので、屋根を売ることができませんでした
動的BAKEできれば屋根を売れますし、はしごや階段も売れます。
ユーザーが自分で家を建設できるようになります
参考記事
tsubakit1.hateblo.jp
