차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
unity:navmeshandpathfinding [2015/10/15 01:46] 211.50.119.114unity:navmeshandpathfinding [2021/03/03 14:48] (현재) 1.238.85.38
줄 1: 줄 1:
 +{{tag>유니티 unity}}
  
-======내브메쉬(Navmesh)와 경로찾기(Pathfinding) (Pro 전용)======+======내브메쉬(Navmesh)와 경로찾기(Pathfinding)======
  
-네브 메쉬(일명 //Navmesh//, 탐색 메쉬)는 월드 기하구조(geometry)의 축소판으로, 게임플레이 에이전트가 월드를 탐색하는 데 사용합니다. 일반적으로 에이전트는 경로를 통해 찾으려고 하는 //goal//이나 //destination//이 있는데, 그 경로를 따라 목표까지 탐색합니다. 이 과정을 경로찾기(//pathfinding//)이라고 합니다. 주목할 것은, 네브메쉬의 생성(//Navmesh generation//, 혹은 //baking//)은 개발자에 의해 편집기 내에서 이루어지는 반면, //pathfinding//은 그 네브메쉬를 바탕으로 에이전트에 의해서 실행 중에 이루어집니다.+네브 메쉬(일명 //Navmesh//, 탐색 메쉬)는 월드 기하구조(geometry)의 축소판으로, 게임플레이 에이전트가 월드를 탐색하는 데 사용. 일반적으로 에이전트는 경로를 통해 찾으려고 하는 //goal//이나 //destination//이 있는데, 그 경로를 따라 목표까지 탐색. 이 과정을 경로찾기(//pathfinding//)이라고 . 주목할 것은, 네브메쉬의 생성(//Navmesh generation//, 혹은 //baking//)은 개발자에 의해 편집기 내에서 이루어지는 반면, //pathfinding//은 그 네브메쉬를 바탕으로 에이전트에 의해서 실행 중에 이루어다.
  
-게임의 복잡한 월드에는 많은 에전트와 동적인 장애물이 있을 수 있고월드 내에 여러 영역에 대해 접근성 레벨이 끊임없이 바뀌기도 합니. 에이전트는 이러한 변화에 동적으로 대응하여야 합니다. 한 에이전트의 경로찾기 작업은 른 인물과의 충돌 피하기, 지형의 성질 변화, 물리적 장애물(닫히는 도어 등), 그리고 실제 목적지의 업데이트 등에 의해 방해 받거나 영향을 받게 됩니다.+이 변경되었다면네비게션매쉬는 시 구워져야한다(Bake).
  
-다음은 네브메쉬(navmesh)을 설정하고 에이전트가 이에 기반하여 경로찾기를 하는 입니:+게임의 복잡한 월드에는 많은 에이전트와 동적인 장애물이 있을 수 있, 월드 내에 여러 영역에 대해 접근성 레벨이 끊임없이 바뀌기도 함. 에이전트는 러한 변화에 동적으로 대응하여야 함. 한 에이전트의 경로찾기 작업은 다른 인물과의 충돌 피기, 지형의 성질 변화, 물리적 장애물(닫히는 도어 등), 그리고 실제 목적지의 업데이트 등에 의해 방해 받거나 영향을 받게 된.
  
-  * 이 레벨에서 ''Plane'' 나 ''Terrain'' 같은 기하구조(geometry)을 생성합니다. ''Plane'' or a ''Terrain''+다음은 네브메쉬(navmesh)을 설정하고 에이전트가 이에 기반하여 경로찾기를 하는 예제임: 
-  * 인스펙터(Inspector)에서 창의 오른쪽 코너에 있는 **Static**을 클릭하고 기하구조가 **Navigation Static**으로 마크 업(marked up) 되었는지 확인합니다.+ 
 +  * 이 레벨에서 ''Plane'' 나 ''Terrain'' 같은 기하구조(geometry)을 생성. ''Plane'' or a ''Terrain''
 +  * 인스펙터(Inspector)에서 창의 오른쪽 코너에 있는 **Static**을 클릭하고 기하구조가 **Navigation Static**으로 마크 업(marked up) 되었는지 확인.
 ->{{:unity3d:NavmeshStaticPulldown.png}} ->{{:unity3d:NavmeshStaticPulldown.png}}
  
   * Navigation Mesh 창을 띄웁니다(**Window**->**Navigation**).   * Navigation Mesh 창을 띄웁니다(**Window**->**Navigation**).
-*[[unity:Navmeshbaking|Bake the mesh]]. 이렇게 하면 모든 ''navigation-static'' 기하구조에 대한 네브메쉬를 생성합니다+  * [[unity:Navmeshbaking|Bake the mesh]]. 이렇게 하면 모든 ''navigation-static'' 기하구조에 대한 네브메쉬를 생성
-  * 씬(scene)에서 몇 개의 동적 기하구조를 생성합니다(예: 인물).+  * 씬(scene)에서 몇 개의 동적 기하구조를 생성(예: 인물).
   * 에이전트를 하나 설정하고 (혹은 여러 개), 씬(scene)에서 [[class-NavMeshAgent|NavMeshAgent]] 컴포넌트를 동적 기하구조에 추가하여,   * 에이전트를 하나 설정하고 (혹은 여러 개), 씬(scene)에서 [[class-NavMeshAgent|NavMeshAgent]] 컴포넌트를 동적 기하구조에 추가하여,
-  * 에이전트에 부착된 스크립트에서 에이전트에 목적지를 부여합니다 (//destination//속성을 설정함으로써) +  * 에이전트에 부착된 스크립트에서 에이전트에 목적지를 부여함 (//destination//속성을 설정함으로써) 
-  * Play을 누르고 마법을 관람합니다.+  * Play을 누르고 마법을 관람.
  
-사용자만의 [[class-NavMeshLayers|NavMesh layers]]을 정의하는 것도 가능함을 주목하십시오. 이는 한 부분의 환경이 다른 부분보다 지나가기가 용이한 상황에서 필요합니다. 바로 연결하지 않은 메쉬의 일부분에 대해, [[class-OffMeshLink|Off Mesh Links]]을 생성하는 것도 가능합니다.+사용자만의 [[class-NavMeshLayers|NavMesh layers]]을 정의하는 것도 가능함을 주목하십시오. 이는 한 부분의 환경이 다른 부분보다 지나가기가 용이한 상황에서 필요. 바로 연결하지 않은 메쉬의 일부분에 대해, [[class-OffMeshLink|Off Mesh Links]]을 생성하는 것도 가능. 
 + 
 +<file csharp> 
 +using System.Collections; 
 +using System.Collections.Generic; 
 +using UnityEngine; 
 + 
 +public class Enemy : MonoBehaviour { 
 + 
 +    public GameObject target; 
 +    UnityEngine.AI.NavMeshAgent agent; 
 + 
 +    // Use this for initialization 
 +    void Start () { 
 +        agent = GetComponent<UnityEngine.AI.NavMeshAgent>(); 
 +    } 
 +     
 +    // Update is called once per frame 
 +    void Update () { 
 +        agent.destination = target.transform.position; 
 +    } 
 +
 +</file>
  
 =====자동 오프메쉬(off-mesh) 링크===== =====자동 오프메쉬(off-mesh) 링크=====
-네브메쉬 기하구조는 자동 오프메쉬(off-mesh)링크 생성에도 마크 업 될 수 있습니다:+네브메쉬 기하구조는 자동 오프메쉬(off-mesh)링크 생성에도 마크 업 될 수 있다:
  
 {{:unity3d:NavmeshStaticPlusOffmesh.png}} {{:unity3d:NavmeshStaticPlusOffmesh.png}}
 // 자동 오프 메쉬 링크 생성에 대한 기하구조의 마크 업// // 자동 오프 메쉬 링크 생성에 대한 기하구조의 마크 업//
  
-이러한 방법으로 마크 업 된 기하구조는 다른 네브메쉬 기하구조로의 링크를 생성하는 [[Navmeshbaking|Navmesh Baking]] 과정에서 체크 될 것 입니다. 이런 방법으로, 각 게임오브젝트(GameObject)의 자동 생성을 제어할 수 있습니다. 오프 메쉬 링크가 베이킹 과정에서 자동생성인지의 여부는 **Navigation Bake** 설정에서 //Jump distance// 와 //Drop height// 속성에서 결정됩니다.+이러한 방법으로 마크 업 된 기하구조는 다른 네브메쉬 기하구조로의 링크를 생성하는 [[Navmeshbaking|Navmesh Baking]] 과정에서 체크 될 것 . 이런 방법으로, 각 게임오브젝트(GameObject)의 자동 생성을 제어할 수 있다. 오프 메쉬 링크가 베이킹 과정에서 자동생성인지의 여부는 **Navigation Bake** 설정에서 //Jump distance// 와 //Drop height// 속성에서 결정다.
  
-자동 생성 오프 메쉬 링크에 할당된 NavMeshLayer는 내장 레이어(built-in layer) //Jump// 입니다. 이는 자동 생성 오프 메쉬 링크의 비용을 전체적으로 관리할 수 있게 해 줍니다([[class-NavMeshLayers|Navmesh layers]] 참조). +자동 생성 오프 메쉬 링크에 할당된 NavMeshLayer는 내장 레이어(built-in layer) //Jump// . 이는 자동 생성 오프 메쉬 링크의 비용을 전체적으로 관리할 수 있게 해 다([[class-NavMeshLayers|Navmesh layers]] 참조).
  
 수동으로 //오프 메쉬 링크//를 설정하는 것 역시 가능함을 주목하십시오([[class-OffMeshLink|here]]에 설명 참조). 수동으로 //오프 메쉬 링크//를 설정하는 것 역시 가능함을 주목하십시오([[class-OffMeshLink|here]]에 설명 참조).
  
- 
-{{tag>유니티 unity}} 
    * 출처: [[http://unitykoreawiki.com/index.php?n=KrMain.NavmeshandPathfinding|유니티코리아위키]] (CC BY-NC-SA 2.0)    * 출처: [[http://unitykoreawiki.com/index.php?n=KrMain.NavmeshandPathfinding|유니티코리아위키]] (CC BY-NC-SA 2.0)
  

CC Attribution-Noncommercial-Share Alike 4.0 International 별도로 명시하지 않을 경우, 이 페이지의 내용은 다음 라이선스에 따라 사용할 수 있습니다: CC Attribution-Noncommercial-Share Alike 4.0 International
unity/navmeshandpathfinding.1444873590.txt.gz · 마지막으로 수정됨 저자 211.50.119.114