일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 안드로이드 Application Lifecycle
- 아이폰
- tcp네트워크
- 벨팡
- 명령어
- 비행기 모드
- 기업의 행포
- 리눅스
- 집 정리
- 나지보
- unity
- 소캣(Socket)
- tcp
- game
- 자바
- 게임
- 안드로이드
- 포트(Port)
- 변경된 정보
- 스랄 특성
- 컬렉션 프레임
- 어플
- php 홈디렉토리 변경방법
- TCP 네트워크 방식의 연결
- 나지보 특성
- 아이패드
- Collection Framework
- End of Darkness
- 에셋
- 히오스
- Today
- Total
Do Something IT
[unity3d] 내브메쉬(Navmesh)와 경로찾기(Pathfinding) (Pro 전용) 본문
출처 : 바로가기
네브 메쉬(일명 Navmesh, 탐색 메쉬)는 월드 기하구조(geometry)의 축소판으로, 게임플레이 에이전트가 월드를 탐색하는 데 사용합니다. 일반적으로 에이전트는 경로를 통해 찾으려고 하는 goal이나 destination이 있는데, 그 경로를 따라 목표까지 탐색합니다. 이 과정을 경로찾기(pathfinding)이라고 합니다. 주목할 것은, 네브메쉬의 생성(Navmesh generation, 혹은 'baking)은 개발자에 의해 편집기 내에서 이루어지는 반면, pathfinding''은 그 네브메쉬를 바탕으로 에이전트에 의해서 실행 중에 이루어집니다.
게임의 복잡한 월드에는 많은 에이전트와 동적인 장애물과 있을 수 있고, 월드 내에 여러 영역에 대해 접근성 레벨이 끊임없이 바뀌기도 합니다. 에이전트는 이러한 변화에 동적으로 대응하여야 합니다. 한 에이전트의 경로찾기 작업은 다른 인물과의 충돌 피하기, 지형의 성질 변화, 물리적 장애물(닫히는 도어 등), 그리고 실제 목적지의 업데이트 등에 의해 방해 받거나 영향을 받게 됩니다.
다음은 네브메쉬(navmesh)을 설정하고 에이전트가 이에 기반하여 경로찾기를 하는 예제입니다:
- 이 레벨에서 Plane 나 Terrain 같은 기하구조(geometry)을 생성합니다. Plane or a Terrain.
- 인스펙터(Inspector)에서 창의 오른쪽 코너에 있는 을 클릭하고 기하구조가 으로 마크 업(marked up) 되었는지 확인합니다.
- Navigation Mesh 창을 띄웁니다( -> ).
- Bake the mesh. 이렇게 하면 모든 navigation-static 기하구조에 대한 네브메쉬를 생성합니다.
- 씬(scene)에서 몇 개의 동적 기하구조를 생성합니다(예: 인물).
- 에이전트를 하나 설정하고 (혹은 여러 개), 씬(scene)에서 NavMeshAgent 컴포넌트를 동적 기하구조에 추가하여,
- 에이전트에 부착된 스크립트에서 에이전트에 목적지를 부여합니다 (destination속성을 설정함으로써)
- Play을 누르고 마법을 관람합니다.
Links]]. 사용자만의 NavMesh layers을 정의하는 것도 가능함을 주목하십시오. 이는 한 부분의 환경이 다른 부분보다 지나가기가 용이한 상황에서 필요합니다. 바로 연결하지 않은 메쉬의 일부분에 대해, [[class-OffMeshLink|Off Mesh Links]을 생성하는 것도 가능합니다.
자동 오프메쉬(off-mesh) 링크
네브메쉬 기하구조는 자동 오프메쉬(off-mesh)링크 생성에도 마크 업 될 수 있습니다:
자동 오프 메쉬 링크 생성에 대한 기하구조의 마크 업
이러한 방법으로 마크 업 된 기하구조는 다른 네브메쉬 기하구조로의 링크를 생성하는 Navmesh Baking 과정에서 체크 될 것 입니다. 이런 방법으로, 각 게임오브젝트(GameObject)의 자동 생성을 제어할 수 있습니다. 오프 메쉬 링크가 베이킹 과정에서 자동생성인지의 여부는 설정에서 Jump distance 와 Drop height 속성에서 결정됩니다.
자동 생성 오프 메쉬 링크에 할당된 NavMeshLayer는 내장 레이어(built-in layer) Jump 입니다. 이는 자동 생성 오프 메쉬 링크의 비용을 전체적으로 관리할 수 있게 해 줍니다(Navmesh layers 참조).
수동으로 오프 메쉬 링크를 설정하는 것 역시 가능함을 주목하십시오(here에 설명 참조).
1.테스트 해본 예제
2. 관련 컨트롤러가 필요함
using UnityEngine; using System.Collections; public class NavControler : MonoBehaviour { public Transform target; private NavMeshAgent agent; // Use this for initialization void Start () { agent = (NavMeshAgent)this.GetComponent("NavMeshAgent"); } // Update is called once per frame void Update () { agent.SetDestination(target.position); } }
'Unity3D' 카테고리의 다른 글
Unity Animator.Update Hogging CPU (0) | 2013.03.07 |
---|---|
[유니티]유니티 메모리관리이해 (0) | 2013.02.05 |
[Unity3d]NGUI (0) | 2012.11.18 |
[unity] 컴파일시 플랫폼 구분 방법 (0) | 2012.10.08 |
[unity] loding Progress base logic (0) | 2012.10.08 |