공부중

[project_PQ]-[Unity3D] Runtime navmesh bake 본문

Project/project_PQ

[project_PQ]-[Unity3D] Runtime navmesh bake

곤란 2018. 7. 28. 14:08
반응형

포켓몬 퀘스트를 해보면

 

 

사용자(Player)는 기술을 사용해라 명령과 해산(흩어지기) 명령 등을 지시할수 있고

자동으로 사냥하도록 되어 있다.

 

이동은 사용자가 직접적인 여기로 이동해라라는 명령은 존재하지 않는다.

그러기 위해서는 자동으로 적들을 향해서 이동하는 시스템을 만들어야 하는데..

 

근데 이 맵들이 자동으로 매번 구조가 바뀌므로 해당 씬을 불러올때 자동으로 navmesh가 bake 되어야만 한다.

 

이것은 어떻게 구현하나 싶었는데 마침 튜토리얼에서 좋은것을 발견 했다.

 

https://unity3d.com/kr/learn/tutorials/topics/navigation/introduction-and-navigation-overview?playlist=17105

 

위의 튜토리얼에서 Play 버튼을 누를때마다 자동으로 bake가 되는것을 볼 수 있다.

 

아무튼 위의페이지에서 스타터킷을 받아서 한번 따라해봤고

 

여기서 파일 몇개를 가져와서 튜토리얼에 나온대로 적용을 해보았다.

 

튜토리얼에서 내 Asset폴더로 옮긴것은 NavMeshComponents를 옮겼다 물론 하위 모든 폴더와 파일들 포함.

 

그 외는 모두 튜토리얼과 동일하게 해주었다.

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;

public class NavigationBaker : MonoBehaviour {

    public NavMeshSurface[] surfaces;


	// Use this for initialization
	void Start () {

          for (int i = 0; i < surfaces.Length; i++)
          {
              surfaces[i].BuildNavMesh();
          }

	}
	
	// Update is called once per frame
	void Update () {
		
	}
}

 

Navigation Baker라는 스크립트를 만들어서 등록하고

 

어떤 바닥인지 넣어준 뒤에 ..... 플레이를 눌러 주었더니...

 

붐볼이 붕 떠버렸다 -_-...

 

아니 붐볼 바닥에 이동공간을 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

 

이것은 간단하게

render mesh를 physics colliders로 바꾸어 주면 된다

 

 

이제 잘 된다 야호!

반응형