Unity 엔진 공부/project1
project1 개발일지 - 4 [nav mesh agent]
EJH
2025. 7. 15. 21:35
반응형
몬스터 이동 시스템 설계 및 구현
목표
몬스터가 플레이어를 자연스럽게 추적할 수 있도록 NavMeshAgent 기반 이동 시스템을 도입했다.
이 과정에서 **이동 타입(지상/비행)**에 따른 차별 처리와, 기존 스탯 시스템과의 연동도 함께 반영했다.
1. NavMeshAgent 도입 – 플레이어 추적 시스템 기반 구축
navMeshAgent, obstacle 등으로 유니티에서 제공하는 ai를 사용할 수 있다.
몬스터의 플레이어를 향한 길을 찾는 기능을 간단히 구현하기 위해 사용한다.
2. 전체 맵 NavMesh 베이크
NavMeshAgent가 정상 작동하기 위해서는 탐색 가능한 영역을 미리 베이크(Bake) 해야 한다.
- Unity Navigation 창에서 Bake 메뉴 사용
- Walkable 영역 설정 후 전체 맵을 Bake
- 동적 오브젝트나 지형 변화가 있다면 NavMeshObstacle도 함께 고려해야 함
3. 지상/비행 몬스터 구분 – Offset 방식 적용
gaori, slime 같은 지상형 몬스터는 NavMesh 위를 걷고
mogi 같은 비행형 몬스터는 NavMesh 위를 기반으로 일정 높이에서 떠 있게 하기 위해 오프셋 적용
비행형 몬스터에게 Y축 offset (transform.position + Vector3.up * offset) 적용
NavMeshAgent는 그대로 사용하되, 실제 렌더링 위치만 상승
따로 비행 AI를 구현하지 않아도, 지상 경로만 따라가며 비행하는 듯한 효과 연출 가능
시각적 차별화 + 간단한 구현
충돌 처리, 사거리 연산 시 기준 좌표가 달라질 수 있어 계산 시 주의 필요
차후 콜라이더의 위치를 눈에 보이는 객체에 맞게 조정 예정
4. 이동속도 스탯 연동 – Agent 속도에 반영
기존에 설계한 Stat.speed 값을 NavMeshAgent 속도에 연동시켜,
몬스터마다 속도 차이를 표현스탯 수치만 변경해도 몬스터 속도가 자동 반영되므로, 밸런싱 및 연출 다양화 가능
다양한 몬스터(탱커, 빠른 적 등) 구현에 효과적
마무리
- NavMeshAgent 기반 추적 시스템으로 몬스터 이동 구현 완료
- 전체 맵 베이크를 통해 정확한 경로 탐색 가능해짐
- 비행형 vs 지상형 몬스터는 Offset을 활용해 시각적으로 구분
- 기존 스탯 시스템과의 연동으로 속도까지 자동 적용되는 구조 완성
반응형