- 개요
적이 이동하기 위한 좌표를 매니저 클래스가 아닌, 포탈이 설정하여 적에게 넘겨주는 방식으로 변경한다
또, 적이 좌표를 지나쳤다면 다시 유턴하지 않고 바로 다음 좌표로 넘어가도록 개선한다
- 스크립트 작업
1) Waypoint 클래스

좌표를 지정하기 위한 Waypoint 클래스를 추가하고 좌표 오브젝트에 컴포넌트로 사용한다
2) Enemy_Portal 클래스

waypointsList 멤버변수를 추가하여 적이 이동할 경로 오브젝트를 저장한다

CollectWaypoints 함수를 위와 같이 정의한다
waypointsList 멤버변수를 초기화한 후에 자식 오브젝트를 순회하면서
Waypoint 컴포넌트를 가져와 waypoinstList 멤버변수에 저장한다

Awake 함수를 추가하고 CollectWaypoints 함수를 호출한다

SpawnProcess 함수에 위와 같이 로직을 추가하여
생성된 적의 SetupEnemy 함수를 호출하고 waypointsList 멤버변수를 인자로 넘겨준다
3) Enemy_Base 클래스

기존의 멤버변수의 이름을 수정하고 새로운 멤버변수를 추가한다
- wayPoints 멤버변수를 myWaypoints 멤버변수로 교체
- waypointIndex 멤버변수를 nextWaypointIndex 멤버변수로 교체
- currentWaypointIndex 멤버변수를 추가

SetNextDestination 함수의 로직을 위와 같이 수정한다
다른 함수도 동일하게 waypoints 멤버변수를 myWaypoints 멤버변수로 교체하고,
waypointIndex 멤버변수를 nextWaypointIndex 멤버변수로 교체한다
로직을 추가하여 currentWaypointIndex 멤버변수의 값을 설정한다

InitializeEnemy 함수를 추가하고 위와 같이 구성한다
해당 함수를 호출하여 적의 기본값을 세팅하고, 다음 좌표로 이동하도록 설정한다

SetupEnemy 함수를 위와 같이 구성한다
매개변수로 받은 newWaypoints를 순회하면서 myWaypoints 멤버변수에 값을 저장하고
InitializeEnemy 함수를 호출하여 기본 설정을 진행한다

ShouldChangeWaypoint 함수를 추가하고 위와 같이 로직을 구성한다
적의 현재 위치에서 다음 좌표까지의 거리값과 현재 좌표에서 다음 좌표까지의 거리값을 비교한 결과를 반환한다
후자가 더 크면 현재 좌표를 다음 좌표로 전환하고, 전자가 더 크면 현재 좌표를 유지한다

Start 함수에서 InitializeEnemy 함수를 호출하여 적의 기본값을 설정한다

Update 함수에서 ShouldChangeWaypoint 함수를 호출하여 다음 좌표로 이동할지 판단한다
- 애셋 작업
1) WaveData 애셋

2개의 웨이브에서 1개의 웨이브로 축소하고 위와 같이 50 + 50개의 적을 스폰하도록 수정한다
- 최종 실행 결과

위와 같이 경로를 지나가지 못해도 바로 다음 경로로 이동하는 것을 확인할 수 있다
'유니티 엔진 - 게임 프로젝트 > 타워 디펜스 게임' 카테고리의 다른 글
| 웨이브 시스템 - 4) 실시간 맵 변경 (0) | 2026.06.22 |
|---|---|
| 웨이브 시스템 - 3) 웨이브 연속 처리 (0) | 2026.06.17 |
| 웨이브 시스템 - 1) 적을 생성하는 포탈의 추가 (0) | 2026.06.16 |
| 레벨 생성 - 최종) 타일 추가와 타일맵의 NavMesh 수정 (0) | 2026.06.09 |
| 레벨 생성 - 4) 타일맵 생성 (0) | 2026.06.09 |