오늘 배운 내용
- NavMesh
NavMesh
Bake 단계 (사전 준비)
컴포넌트: NavMesh Surface -> Bake 버튼 클릭!
1. 공간 판별
Unity 씬을 훑음
- 이 표면 Walking 가능한가?
- 경사 각도 올라갈 수 있는가? [Navigation 탭 - Max Slope]
- Agent가 지나갈 수 있는 충분한 부피/반지름 인가? [Navigation 탭 - Radius]
2. 공간을 폴리곤/면(Polygon)으로 분해/생성

- 다각형(Polygon)으로 쪼갬
- 이동에 필요한 정보만 남김
3. 폴리곤/면(Polygon) 간 연결
4. Area - Cost 저장

Runtime 단계 (이동 요청 시)
agent.SetDestination(target.position);
- 현재 위치가 속한 폴리곤/면 찾기 -> 내 위치 찾기
- 목적지 폴리곤/면 찾기
- 폴리곤 그래프(Graph)에서 최적 경로 검색 (경로 O/X ❌ -> 경로 선택)
- 폴리곤 경로를 따라 이동 경로 생성
NavMesh가 내부에 가지고 있는 정보
[폴리곤 A] ㅡ 연결 ㅡ [폴리곤 B]
[폴리곤 B] ㅡ 연결 ㅡ [폴리곤 C]
-> 이동 정보만 가짐 -> 그래프 기반 이동이기 때문에 이미 검증된 길만 탐색함
A* vs NavMesh
A*
- 노드 생성: 런타임(Runtime)
- 그래프 구성: 직접
- 비용 계산: 항상
NavMesh
- 노드 생성: Bake
- 그래프 구성: 엔진
- 비용 계산: 최소화
NavMesh 기본 구성
1. NavMesh Surface - 길 만들기

- 걸어다닐 수 있는 공간인지 판별해주는 매니저 역할
2. NavMesh Agent

역할
프로퍼티
- speed
- angular speed
- Stopping Distance
필수함수
agent.SetDestination(target.position);
유의사항
- transform.position 으로 이동 X
- Rigidbody 동시 제어 X
3. NavMesh Obstacle - 동적 장애물

필수 기능
- Carving [ON] -> 못가는 길을 만듦.
유의사항
- 많이 쓰면 성능 하락
- 많이 움직일 필요가 없는 물체 정도만 사용
Agent Settings

- Radius/Height -> 캐릭터 부피/크기
- Step Height/Max Slope -> 계단-경사 허용치
-> Agent(AI) 몸체
Areas

- 0~31번까지 있음
- Cost = 선호도 (낮을수록 우선순위)
NavMesh Link

NavMesh Modifier Volume

역할
예시