NevMesh 사용해서 길찾기
유니티에서는 NevMesh라는 길을 찾는 기능을 지원한다.
기본 원리는 다음과 같다.
특정 오브젝트들을 선택해서 'Bake' 이후에 만들어지는 NevMesh를 통해서 Agent들이 길을 찾는 것이다.
Window - Ai - Navigation의 메뉴를 클릭한다.
Navigation이라는 메뉴창이 나오는데 여기에서 Object 메뉴를 눌러서 hierarchy 상에서 맵으로 될 오브젝트를 선택한다.
Navigation Area라는 항목에는 Walkable(이동 가능한) , Not Walkable(이동 불가능한), Jump(점프)라는 항목을 오브젝트마다 선택해준다.
이때 'Navigation Static이라는 건 움직이지 않는 정적인 오브젝트일 경우에 '체크'해준다.
오브젝트들을 선택하고 난 이후에는 Bake 항목으로 가서 높이 값이라던지 등등 설정값을 설정하고 Bake를 눌러준다.
Bake는 씬 1개당 1개만 가능한데. NavMesh가 저장되는 항목은 'Scenes - 해당 Scene의 이름 - NavMesh으로 저장된다.
이렇게 Bake가 되면 Scene 상에서 파란색으로 적용된 영역을 볼 수 있다.
이제 길을 만들었으니 길을 찾을 Bot (Agent)를 설정할 차례이다.
해당 움직임을 처리하고 싶은 오브젝트의 Inspector에 NavMeshAgent를 추가한다.
스크립트에서 위와 같이 테스트 코드를 작성한다.
using UnityEngine.AI;
public class MoveTo : MonoBehaviour {
public Transform goal;
private NavMeshAgent agent = null;
void Start () {
agent = GetComponent<NavMeshAgent>();
agent.destination = goal.position;
}
}
position으로 길을 이동하는 것을 알 수 있다.
유니티 공식 문서 :https://docs.unity3d.com/Manual/Navigation.html
★★☆☆☆
'개발 > Unity' 카테고리의 다른 글
Unity) 스크립트에서 자동으로 컴포넌트 추가하기 (0) | 2020.02.18 |
---|---|
Unity) 플랫폼 의존 컴파일 (0) | 2020.02.12 |
코드) Unity 마우스 위치로 유닛 이동 (0) | 2020.01.08 |
Unity) Mac / Window 에서 VScode 스크립트 자동정렬 (0) | 2020.01.06 |
Unity) 최적화 - 정적 게임 오브젝트(Static Object) (0) | 2019.12.20 |
댓글