- 개요
타워 유닛이 적을 공격하는 방식을 개선하여 적의 타입별로 우선적으로 적을 공격하도록 설정한다
또, 추적할 적을 향해 발사된 레이저가 유효하게 동작하도록 개선한다
- 스크립트 작업
1) Enemy_Base 클래스

적의 타입을 적용하기 위한 EnemyType 열거형을 추가한다
프로젝트에 맞춰 Basic, Fast 타입만을 설정하였다

위와 같이 멤버변수를 추가한다
- centerPoint 멤버변수 : 적의 중심점의 트랜스폼
- enemyType 멤버변수 : 적의 타입

필요한 함수들을 추가한다
GetCenterPoint 함수를 호출하여 적의 중심점을 반환한다
GetEnemyType 함수를 호출하여 적의 타입을 반환한다
2) VisualEffect_CrossbowTower 클래스

currentEnemy 멤버변수를 추가하여 현재 석궁타워가 공격중인 적을 판단한다

Update 함수에 위의 로직을 추가하여 공격의 VFX 효과가 적의 중심점을 향하도록 설정한다

CoDisableVisualEffect 코루틴 함수에 로직을 추가하여 VFX 효과를 재생하기 이전에 현재 공격중인 적을 저장한다
3) Player_TowerBase 클래스

타워 유닛의 조상 클래스의 멤버변수를 위와 같이 수정 + 추가한다
- primaryTargetType 멤버변수 : 타워 유닛이 우선 공격할 적의 타입
- currentEnemy 멤버변수 : 트랜스폼이 아닌 적 클래스 자체의 값을 저장
- priorityTargets 멤버변수 : 우선 공격할 적들을 저장
- possibleTagets 멤버변수 : 공격할 적들을 저장


공격할 적을 탐색하는 로직을 위와 같이 분리하였다
FindEnemyWithinRange 함수는 스피어 오버랩을 수행하여 오버랩된 적의 타입을 판단하여
priorityTargets 변수나 possibleTargets 변수에 저장한다
이후 각각의 변수를 FindAdvancedEnemy 함수에 넘겨 저장된 적들 중에서 가장 앞선 적을 반환한다
FindAdvancedEnemy 함수는 이전 로직과 동일하여 가장 앞선 적을 반환한다

Update 함수에서 FindEnemyWithinRange 함수를 호출하도록 수정하고
공격할 적의 위치를 탐색할 때 GetCenterPoint 함수를 사용하도록 수정한다

동일하게 GetDirectionToEnemy 함수도 수정하고
RotateTowerHeadToEnemy 함수에서 GetDirectionToEnemy 함수를 사용하도록 수정한다

GetCurrentEnemy 함수를 추가하여 타워 유닛이 현재 공격중인 적을 반환한다
4) Player_TowerCrossbow 클래스

Awake 함수에 로직을 추가하여 석궁을 회전시키도록 설정한다
- 최종 실행 결과



실행 결과 주변에 우선적으로 공격할 적이 없거나 이미 공격한 적이 있다면 해당 적을 공격하지만,
우선적으로 공격해야 할 적이 감지되면 해당 적을 먼저 공격하는 것을 확인할 수 있다
'유니티 엔진 - 게임 프로젝트 > 타워 디펜스 게임' 카테고리의 다른 글
| 레벨 생성 - 1) 타일 시스템 (0) | 2026.06.08 |
|---|---|
| 데미지 시스템 - 최종) 유닛의 타겟 설정 방식과 공격 FX 효과 개선 (0) | 2026.06.02 |
| 데미지 시스템 - 1) 적 추적 방식 개선 (0) | 2026.06.01 |
| 유닛 세팅 - 최종) 무기의 장전 효과 연출 (0) | 2026.05.26 |
| 유닛 세팅 - 3) 무기의 충전 효과 연출 (0) | 2026.05.26 |