차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판이전 판다음 판 | 이전 판 | ||
unity3d:navmeshandpathfinding [2015/05/21 14:02] – 링크가 옮기기 작업 때문에 적응했습니다 V_L | unity:navmeshandpathfinding [2021/03/03 14:48] (현재) – 1.238.85.38 | ||
---|---|---|---|
줄 1: | 줄 1: | ||
+ | {{tag> | ||
- | ======내브메쉬(Navmesh)와 경로찾기(Pathfinding) (Pro 전용)====== | + | ======내브메쉬(Navmesh)와 경로찾기(Pathfinding)====== |
- | 네브 메쉬(일명 // | + | 네브 메쉬(일명 // |
- | 게임의 복잡한 월드에는 많은 에이전트와 동적인 장애물과 있을 수 있고, 월드 내에 여러 영역에 대해 접근성 레벨이 끊임없이 바뀌기도 합니다. 에이전트는 이러한 변화에 동적으로 대응하여야 합니다. | + | 씬이 변경되었다면, 네비게이션매쉬는 |
- | 다음은 네브메쉬(navmesh)을 설정하고 에이전트가 이에 | + | 게임의 복잡한 월드에는 많은 에이전트와 동적인 장애물이 있을 수 있고, 월드 내에 여러 영역에 대해 접근성 레벨이 끊임없이 바뀌기도 함. 에이전트는 이러한 변화에 동적으로 대응하여야 함. 한 에이전트의 |
- | | + | 다음은 네브메쉬(navmesh)을 설정하고 에이전트가 이에 기반하여 경로찾기를 하는 예제임: |
- | * 인스펙터(Inspector)에서 창의 오른쪽 코너에 있는 **Static**을 클릭하고 기하구조가 **Navigation Static**으로 마크 업(marked up) 되었는지 확인합니다. | + | |
+ | | ||
+ | * 인스펙터(Inspector)에서 창의 오른쪽 코너에 있는 **Static**을 클릭하고 기하구조가 **Navigation Static**으로 마크 업(marked up) 되었는지 확인함. | ||
-> | -> | ||
* Navigation Mesh 창을 띄웁니다(**Window**-> | * Navigation Mesh 창을 띄웁니다(**Window**-> | ||
- | *[[unity: | + | |
- | * 씬(scene)에서 몇 개의 동적 기하구조를 생성합니다(예: 인물). | + | * 씬(scene)에서 몇 개의 동적 기하구조를 생성함(예: 인물). |
* 에이전트를 하나 설정하고 (혹은 여러 개), 씬(scene)에서 [[class-NavMeshAgent|NavMeshAgent]] 컴포넌트를 동적 기하구조에 추가하여, | * 에이전트를 하나 설정하고 (혹은 여러 개), 씬(scene)에서 [[class-NavMeshAgent|NavMeshAgent]] 컴포넌트를 동적 기하구조에 추가하여, | ||
- | * 에이전트에 부착된 스크립트에서 에이전트에 목적지를 부여합니다 | + | * 에이전트에 부착된 스크립트에서 에이전트에 목적지를 부여함 (// |
- | * Play을 누르고 마법을 관람합니다. | + | * Play을 누르고 마법을 관람함. |
- | 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< | ||
+ | } | ||
+ | |||
+ | // Update is called once per frame | ||
+ | void Update () { | ||
+ | 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) // |
- | //수동으로'' | + | 수동으로 |
- | |||
- | {{tag> | ||
* 출처: [[http:// | * 출처: [[http:// | ||