기본 패턴
csharp
using UnityEngine.AI;
agent.SetDestination(target.position);설명
- Unity 내비게이션의 핵심은 "걷기 가능한 표면"과 "그 표면 위를 움직이는 agent"를 분리해서 생각하는 것입니다.
NavMeshSurface가 세계의 길을 만들고,NavMeshAgent가 그 길 위에서 경로를 찾고 따라갑니다. - Unity 6 기준 AI Navigation 패키지는 편집 시점과 런타임 모두에서 navmesh를 구축하고, obstacle과 link를 사용해 더 실제적인 이동 경로를 만들게 도와줍니다.
NavMeshAgent는 단순히 목표 지점만 주면 움직이는 편리한 컴포넌트지만, 정지 거리, 회전, 가속, 장애물 회피, path pending 같은 상태를 함께 이해해야 예상 가능한 캐릭터가 됩니다.NavMeshObstacle은 움직이는 장애물을 피하게 만들거나 carve를 통해 길을 막게 할 수 있고, link는 점프, 사다리, 문 통과처럼 단순 평면 보행으로 표현되지 않는 연결을 담당합니다.- 결국 NavMesh는 "AI 이동 기능 하나"가 아니라 레벨 구조, agent 크기, 경로 허용 규칙, 특수 이동 연결을 묶는 시스템입니다. 레벨과 캐릭터 규격이 함께 설계돼야 안정적으로 동작합니다.
빠른 정리
| 요소 | 역할 |
|---|---|
NavMeshSurface | 걸을 수 있는 영역을 구축 |
NavMeshAgent | 경로 탐색과 이동 제어 |
SetDestination | 목적지 설정 |
| obstacle | 에이전트가 피하거나 carve해야 하는 동적 장애물 |
| link | 점프, 문, 단차 같은 특수 연결 |
주의할 점
NavMesh가 잘못된 것처럼 보여도 실제 원인은 agent 크기와 bake 설정 불일치인 경우가 많습니다. 캐릭터 크기, 통로 폭, 계단, 경사 제한을 레벨 구조와 함께 점검하세요.
참고 링크
3 sources