차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판이전 판 | |||
unity:navmeshandpathfinding [2021/03/03 14:48] – 1.238.85.38 | unity:navmeshandpathfinding [2021/03/03 14:48] (현재) – 1.238.85.38 | ||
---|---|---|---|
줄 3: | 줄 3: | ||
======내브메쉬(Navmesh)와 경로찾기(Pathfinding)====== | ======내브메쉬(Navmesh)와 경로찾기(Pathfinding)====== | ||
- | 네브 메쉬(일명 // | + | 네브 메쉬(일명 // |
씬이 변경되었다면, | 씬이 변경되었다면, | ||
- | 게임의 복잡한 월드에는 많은 에이전트와 동적인 장애물이 있을 수 있고, 월드 내에 여러 영역에 대해 접근성 레벨이 끊임없이 바뀌기도 | + | 게임의 복잡한 월드에는 많은 에이전트와 동적인 장애물이 있을 수 있고, 월드 내에 여러 영역에 대해 접근성 레벨이 끊임없이 바뀌기도 |
- | 다음은 네브메쉬(navmesh)을 설정하고 에이전트가 이에 기반하여 경로찾기를 하는 예제입니다: | + | 다음은 네브메쉬(navmesh)을 설정하고 에이전트가 이에 기반하여 경로찾기를 하는 예제임: |
- | * 이 레벨에서 '' | + | * 이 레벨에서 '' |
- | * 인스펙터(Inspector)에서 창의 오른쪽 코너에 있는 **Static**을 클릭하고 기하구조가 **Navigation Static**으로 마크 업(marked up) 되었는지 확인합니다. | + | * 인스펙터(Inspector)에서 창의 오른쪽 코너에 있는 **Static**을 클릭하고 기하구조가 **Navigation Static**으로 마크 업(marked up) 되었는지 확인함. |
-> | -> | ||
* Navigation Mesh 창을 띄웁니다(**Window**-> | * Navigation Mesh 창을 띄웁니다(**Window**-> | ||
- | * [[unity: | + | * [[unity: |
- | * 씬(scene)에서 몇 개의 동적 기하구조를 생성합니다(예: 인물). | + | * 씬(scene)에서 몇 개의 동적 기하구조를 생성함(예: 인물). |
* 에이전트를 하나 설정하고 (혹은 여러 개), 씬(scene)에서 [[class-NavMeshAgent|NavMeshAgent]] 컴포넌트를 동적 기하구조에 추가하여, | * 에이전트를 하나 설정하고 (혹은 여러 개), 씬(scene)에서 [[class-NavMeshAgent|NavMeshAgent]] 컴포넌트를 동적 기하구조에 추가하여, | ||
- | * 에이전트에 부착된 스크립트에서 에이전트에 목적지를 부여합니다 | + | * 에이전트에 부착된 스크립트에서 에이전트에 목적지를 부여함 (// |
- | * Play을 누르고 마법을 관람합니다. | + | * Play을 누르고 마법을 관람함. |
- | 사용자만의 [[class-NavMeshLayers|NavMesh layers]]을 정의하는 것도 가능함을 주목하십시오. 이는 한 부분의 환경이 다른 부분보다 지나가기가 용이한 상황에서 필요합니다. 바로 연결하지 않은 메쉬의 일부분에 대해, [[class-OffMeshLink|Off Mesh Links]]을 생성하는 것도 가능합니다. | + | 사용자만의 [[class-NavMeshLayers|NavMesh layers]]을 정의하는 것도 가능함을 주목하십시오. 이는 한 부분의 환경이 다른 부분보다 지나가기가 용이한 상황에서 필요함. 바로 연결하지 않은 메쉬의 일부분에 대해, [[class-OffMeshLink|Off Mesh Links]]을 생성하는 것도 가능함. |
<file csharp> | <file csharp> | ||
줄 34: | 줄 34: | ||
UnityEngine.AI.NavMeshAgent agent; | UnityEngine.AI.NavMeshAgent agent; | ||
- | // Use this for initialization | + | |
- | void Start () { | + | void Start () { |
agent = GetComponent< | agent = GetComponent< | ||
- | } | + | |
- | + | ||
- | // Update is called once per frame | + | // Update is called once per frame |
- | void Update () { | + | void Update () { |
agent.destination = target.transform.position; | agent.destination = target.transform.position; | ||
- | } | + | |
} | } | ||
</ | </ | ||
- | |||
=====자동 오프메쉬(off-mesh) 링크===== | =====자동 오프메쉬(off-mesh) 링크===== | ||
- | 네브메쉬 기하구조는 자동 오프메쉬(off-mesh)링크 생성에도 마크 업 될 수 있습니다: | + | 네브메쉬 기하구조는 자동 오프메쉬(off-mesh)링크 생성에도 마크 업 될 수 있다: |
{{: | {{: | ||
// 자동 오프 메쉬 링크 생성에 대한 기하구조의 마크 업// | // 자동 오프 메쉬 링크 생성에 대한 기하구조의 마크 업// | ||
- | 이러한 방법으로 마크 업 된 기하구조는 다른 네브메쉬 기하구조로의 링크를 생성하는 [[Navmeshbaking|Navmesh Baking]] 과정에서 체크 될 것 입니다. 이런 방법으로, | + | 이러한 방법으로 마크 업 된 기하구조는 다른 네브메쉬 기하구조로의 링크를 생성하는 [[Navmeshbaking|Navmesh Baking]] 과정에서 체크 될 것 임. 이런 방법으로, |
- | 자동 생성 오프 메쉬 링크에 할당된 NavMeshLayer는 내장 레이어(built-in layer) // | + | 자동 생성 오프 메쉬 링크에 할당된 NavMeshLayer는 내장 레이어(built-in layer) // |
수동으로 //오프 메쉬 링크//를 설정하는 것 역시 가능함을 주목하십시오([[class-OffMeshLink|here]]에 설명 참조). | 수동으로 //오프 메쉬 링크//를 설정하는 것 역시 가능함을 주목하십시오([[class-OffMeshLink|here]]에 설명 참조). | ||
- | |||
* 출처: [[http:// | * 출처: [[http:// | ||