Unity 내비메시 에이전트 사용법
Unity의 내비메시 에이전트(NavMesh Agent) 컴포넌트는 캐릭터가 목표 지점으로 부드럽게 이동하고 장애물을 피할 수 있도록 도움을 줍니다. 이 가이드는 내비메시 에이전트의 주요 기능 및 프로퍼티를 설명하고, 활용 예제를 제공합니다.
내비메시 에이전트란?
내비메시 에이전트는 Unity의 내비게이션 시스템의 일부로, 게임 오브젝트가 지정된 경로를 따라 이동할 수 있도록 해줍니다. 에이전트는 자신의 물리적 크기와 주변 장애물을 고려하여 가장 적합한 경로를 선택합니다.
주요 프로퍼티
| 프로퍼티 | 설명 |
|---|---|
| Radius | 에이전트의 반경으로, 장애물 간의 충돌 계산에 사용됩니다. |
| Height | 에이전트가 장애물 아래를 지나갈 수 있는 높이 간격입니다. |
| Base offset | 트랜스폼 피봇 포인트와 관련한 충돌 실린더의 오프셋입니다. |
| Speed | 최대 이동 속도(초당 월드 단위로)입니다. |
| Angular Speed | 최대 회전 속도(초당 각도)입니다. |
| Acceleration | 최대 가속(제곱 초당 월드 단위로)입니다. |
| Stopping distance | 목표 위치에 가까워졌을 때 에이전트가 정지하는 거리입니다. |
| Auto Braking | 목적지에 도달할 때 속도를 줄이는 기능입니다. |
| Quality | 장애물 회피의 품질을 설정합니다. |
| Priority | 에이전트의 회피 우선 순위를 설정합니다. |
경로 찾기
내비메시 에이전트는 목표 지점에 도착하기 위해 자동으로 경로를 재탐색할 수 있습니다. 기본적으로 에이전트는 장애물을 피해가며 최적의 경로를 찾습니다.
| 옵션 | 설명 |
|---|---|
| Auto Traverse OffMesh Link | 오프 메시 링크를 자동으로 횡단할지 설정합니다. |
| Auto Repath | 에이전트가 경로 부분의 끝에 도달하면 재탐색을 수행합니다. |
| Area Mask | 경로 탐색에서 고려해야 할 영역 타입을 설정합니다. |
활용 예제
- 기본 에이전트 설정: 기본 내비메시 에이전트를 설정하여 목표 지점으로 자동 이동하게 할 수 있습니다. 사용자는 목표 지점을 클릭하여 에이전트가 그리도록 할 수 있습니다.
using UnityEngine;
using UnityEngine.AI;
public class SimpleAgent : MonoBehaviour
{
public NavMeshAgent agent;
void Update()
{
if (Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
agent.SetDestination(hit.point);
}
}
}
}
- 장애물 피하기: 다수의 에이전트가 있는 경우, 각 에이전트의 우선 순위를 설정하여 서로 간섭하지 않게 할 수 있습니다.
using UnityEngine;
using UnityEngine.AI;
public class AvoidObstacles : MonoBehaviour
{
public NavMeshAgent agent;
void Start()
{
agent.priority = Random.Range(0, 99);
}
}
추가 리소스
- 내비메시 생성: 내비메시 에이전트를 생성하는 방법.
- 내비게이션 시스템의 내부 작업: 내비게이션과 장애물의 상호작용에 대한 자세한 설명.
- NavMesh Agent 스크립팅 레퍼런스: 내비메시 에이전트 API에 대한 모든 설명.
이 문서가 Unity의 내비메시 에이전트를 사용하는 데 도움을 주기를 바랍니다.