Unity입력과 물리

NavMesh와 AI Navigation 기본

`NavMeshSurface`, `NavMeshAgent`, obstacle, link를 기준으로 Unity 내비게이션의 핵심 구조를 정리합니다.

마지막 수정 2026년 3월 22일

기본 패턴

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