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을 활용해 시각적으로 구분
  • 기존 스탯 시스템과의 연동으로 속도까지 자동 적용되는 구조 완성
반응형