- 개요
석궁 타워가 인접한 적을 공격하는 기능을 추가하고 공격하면서 시각적인 효과를 생성하도록 설정한다
- 스크립트 작업
1) Player_TowerBase 클래스

canRotate 멤버변수를 추가하여 유닛이 회전할 수 있는지 여부를 설정한다

Awake 함수를 추가하여 필요한 경우 자식 클래스에서 오버라이드한다

LateUpdate 함수를 부모 클래스로 옮겨오고 위와 같이 로직을 구성하여
적이 이동한 후에 적을 향해 회전하고 공격하도록 설정한다

CanAttack 함수의 조건문을 수정하여 공격할 수 있는 적이 있는지를 추가적으로 판단한다

RotateTowerHeadToEnemy 함수에 조건을 추가하여 회전할 수 있는지를 판단한다

GetDirectionToEnemy 함수를 추가하여 공격할 수 있는 적이 있는 방향을 반환한다

EnableRotation 함수를 추가하여 회전할 수 있는지 여부를 설정한다
2) Player_TowerCrossbow 클래스

석궁타워 유닛의 클래스에 멤버변수를 추가한다
- gunPoint 멤버변수 : 공격 관련 VFX 효과를 재생할 시작지점의 트랜스폼
- visualEffect 멤버변수 : 공격 관련 VFX 효과의 클래스

Awake 함수를 위와 같이 오버라이드하여 visualEffect 멤버변수의 값을 설정한다

Attack 함수를 위와 같이 오버라이드한다
공격할 적을 가리키는 방향을 가져온 후에 Raycast를 실행한다
이후 visualEffect 멤버변수의 EnableVisualEffect 함수를 실행하여 공격관련 VFX 효과를 재생한다
3) VisualEffect_CrossbowTower 클래스

RequireComponent 속성을 사용하여 해당 컴포넌트가 사용되면
자동으로 Player_TowerCrossbow 컴포넌트도 사용하도록 설정한다

멤버변수는 위와 같다
- visualEffect 멤버변수 : VFX 효과를 재생할 렌더러 컴포넌트
- visualEffectDuration 멤버변수 : VFX 효과를 재생할 시간
- crossbowTower 멤버변수 : 게임 오브젝트에 수식된 Player_TowerCrossbow 컴포넌트

Awake 함수를 위와 같이 구성하여 crossbowTower 멤버변수의 값을 설정한다

외부에서 EnableVisualEffect 함수를 호출하여 석궁 타워의 공격 관련 VFX 효과를 재생한다
CoDisableVisualEffect 코루틴 함수는 위와 같이 동작한다
- 유닛의 회전을 차단 + 렌더러 컴포넌트 활성화 + 그려질 직선의 첫 번째 점과 두 번째 점의 위치 설정
- 지정한 시간 이후에 렌더러 컴포넌트 비활성화 + 유닛의 회전을 허용
- 최종 실행 결과

'유니티 엔진 - 게임 프로젝트 > 타워 디펜스 게임' 카테고리의 다른 글
| 유닛 세팅 - 최종) 무기의 장전 효과 연출 (0) | 2026.05.26 |
|---|---|
| 유닛 세팅 - 3) 무기의 충전 효과 연출 (0) | 2026.05.26 |
| 유닛 세팅 - 1) 타워 유닛 클래스 생성 (0) | 2026.05.25 |
| 적 세팅 - 최종) 웨이브 시스템 추가 (0) | 2026.05.19 |
| 적 세팅 - 3) 적의 생성과 파괴 (0) | 2026.05.19 |