- 개요
NavMesh를 따라 움직이는 적의 움직임이 자연스럽게 연출되도록 설계한다
빠르게 움직이는 적의 타입을 추가하고 적이 움직이면 바퀴와 같은 부속도 같이 회전한다
- 스크립트 작업
1) RotationParts 클래스

바퀴나 프로펠러 같은 적의 부속품에 수식하여 회전을 처리하는 RotationParts 컴포넌트를 추가한다
멤버변수의 구성은 다음과 같다
- rotationVector 멤버변수 : 회전 방향 설정
- rotationSpeed 멤버변수 : 회전 속도 설정
- canRotate 멤버변수 : 회전할지 여부를 설정

Update 함수를 위와 같이 구성하여 매 프레임마다 일정하게 부속을 회전시킨다

StopRotation 함수를 추가하여 회전할지 여부를 설정한다
2) Enemy_Base 클래스

위와 같이 멤버변수를 추가한다
- arrivalDistance 멤버변수 : 오브젝트의 위치에서 이동할 좌표까지의 거리
- turnSpeed 멤버변수 : 오브젝트의 회전 속도
- OnDestinationReached 멤버변수 : 최종 목적지에 도착하면 호출할 이벤트
- isPathEnded 멤버변수 : 최종 목적지에 도착했는지 여부

Awake 함수에 위와 같이 로직을 추가한다
NavMesh Agent가 목적지를 향해 자동으로 회전하지 않도록 설정한다
또, 이동 속도에 비례하여 회피 우선순위를 설정한다
속도가 느린 적일수록 속도가 빠른 적에게 경로를 양보받도록 설정한다


Start 함수를 추가하고 SetNextDestination 함수를 호출한다
SetNextDestination 함수의 로직은 위와 같다
최종 목적지에 도착했다면 관련된 변수들의 값을 설정한 후에, 이벤트 변수에 바인드된 함수를 호출한다
경로를 탐색중이라면 NavMesh Agent에서 경로를 설정하여 이동하고 경로 인덱스를 증가시킨다

Update 함수의 로직을 위와 같이 구현한다
최종 목적지에 도착했다면 더 이상 로직을 진행하지 않는다
적이 조금이라도 움직이고 있다면 FaceToTarget 함수를 호출하여 이동중인 경로를 향하도록 설정한다
적이 이동할 목적지에 도달했다면 SetNextDestination 함수를 호출하여 다음 목적지의 경로를 탐색한다

FaceToTarget 함수의 로직은 위와 같다
적이 이동할 방향을 설정한 뒤에 설정한 방향을 이용하여 회전값을 설정한다
설정한 회전값을 바탕으로 Lerp 함수를 호출하여 선형 보간을 통해 적을 회전시킨다
- 애셋 작업
1) 일반적인 적

일반적인 적은 2개의 바퀴를 부속으로 사용하므로 위와 같이 2개의 RotationParts 컴포넌트를 사용한다
2) 속도가 빠른 적

속도가 빠른 적의 NavMesh Agent 컴포넌트의 Speed 속성의 값을 위와 같이 설정한다
따라서 Priority가 일반적인 적보다 높으므로 일반적인 적에게 경로를 양보한다

속도가 빠른 적은 바퀴가 1개이므로 위와 같이 1개의 RotationParts 컴포넌트를 사용한다
- 최종 실행 결과

'유니티 엔진 - 게임 프로젝트 > 타워 디펜스 게임' 카테고리의 다른 글
| 유닛 세팅 - 2) 유닛의 공격 이펙트 추가 (0) | 2026.05.26 |
|---|---|
| 유닛 세팅 - 1) 타워 유닛 클래스 생성 (0) | 2026.05.25 |
| 적 세팅 - 최종) 웨이브 시스템 추가 (0) | 2026.05.19 |
| 적 세팅 - 3) 적의 생성과 파괴 (0) | 2026.05.19 |
| 적 세팅 - 1) AI Navigation 패키지의 사용 (0) | 2026.05.18 |