- 개요
화염 폭풍 스킬은 플레이어 주의의 원형의 범위로 여러개의 화염구를 발사하고
적중하지 않은 화염구들은 다시 플레이어에게 돌아오도록 구성하였다
화염 폭풍 스킬에서 사용하는 화염구는 기존의 화염구와는 다른 방식으로 동작하도록 설계한다
- C++ 사이드
1) DefaultGameplayTags.ini

화염 폭풍 스킬의 쿨타임으로 사용하기 위한 GameplayTag를 추가한다
2) AuraGameplayTags 클래스


위와 같이 화염 폭풍 스킬의 GameplayTag를 추가 + 생성한다
3) AuraFireBall 클래스

화염 폭풍 스킬에서 사용하는 화염구의 AuraFireBall 클래스를 추가한다
멤버변수 ReturnToActor를 설정하여 발사된 화염구가 돌아오기 위한 Actor를 지정한다

BeginPlay 함수에서는 부모 버전의 함수 + 블루프린트에서 정의한 StartOutgoingTimeline 함수를 호출한다

OnSphereOverlap 함수의 로직은 위와 같다
화염구와 오버랩된 Actor가 유효한지 확인 + 서버인지 확인하여
오버랩된 Target에게 적용할 DamageEffectParams를 설정하고 적용한다
4) AuraFireBlast 클래스

화염폭풍 스킬의 GA 클래스인 AuraFireBlast 클래스를 위와 같이 수정한다
NumFireBalls 멤버변수를 설정하여 화염폭풍에서 생성할 화염구의 개수를 지정하고,
FireBallClass 멤버변수를 설정하여 화염구의 인스턴스를 생성하기 위한 SubClass를 설정한다

SpawnFireBall 함수의 구성은 위와 같다
- NumFireBalls만큼의 균등하게 분산된 FRotator를 생성
- 생성된 FRotator를 순회하면서 다음의 로직 수행
- Spawn하기 위한 위치(플레이어의 위치) + Spawn하기 위한 회전(날아갈 방향)을 설정
- SpawnActorDeferred 함수를 호출하여 Owner와 Instigator를 설정
- 스폰한 화염구의 DamageEffectParams와 ReturnToActor를 설정
- 설정이 끝난 화염구를 지역 컨테이너에 저장하고 FinishSpawning 함수를 호출하여 스폰 종료
- 데이터가 저장된 지역 컨테이너를 반환
- 블루프린트 사이드
1) DA_AbilityInfo 데이터 애셋

화염폭풍 스킬 어빌리티에 관련한 정보를 위와 같이 추가한다
2) BP_FireBall 블루프린트
1) IsWithinExplodeDistance 함수

IsWithinExplodeDistance 함수를 위와 같이 구성한다
현재 화염구의 위치와 화염구가 돌아갈 위치의 차이를 계산하여
화염구의 폭발범위인 ExplodeDistance 이내인지 판단하여 판단한 값을 반환한다
2) EventGraph - StartOutgoingTimeline 이벤트

StartOutgoingTimeline 이벤트의 첫 번째 로직은 위와 같다
- 생성된 화염구의 최초 위치 InitialLocation 변수에 저장
- 생성된 화염구가 도착할 목표 위치 ApexLocation 변수에 저장

두 번째 로직은 위와 같은데,
InitialLocation에서 ApexLocation으로 설정된 타임라인 동안 부드럽게 이동하는 애니메이션을 구현한다

마지막 로직은 위와 같이 구성하였다
- ApexLocation으로 설정한 마지막 타임라인에 화염구가 도착
- ReturnToActor의 위치로 화염구를 다시 부드럽게 이동
- IsWithinExplodeDistance 함수를 호출하여 True이면서 + 서버라면
- OnHit 함수를 호출 + 화염구 파괴
3) GE_Cooldown_FireBlast 블루프린트

화염폭풍 스킬의 쿨타임의 GE가 적용되는 동안 위의 GameplayTag를 Target에게 적용한다

HasDuration 옵션을 설정하여 5초의 쿨타임을 적용한다
4) GE_Cost_FireBlast 블루프린트

화염 폭풍 스킬을 사용하기 위한 비용을 위와 같이 설정하여 선형적으로 Mana를 소모한다
5) GA_FireBlast 블루프린트



위와 같이 화염폭풍 스킬에 대한 설정을 진행한다

ActivateAbility 이벤트의 로직을 위와 같이 구성하여 어빌리티를 부여 -> 화염구를 생성 -> 어빌리티를 종료한다
- 최종 실행 결과
'언리얼 엔진 - 게임 프로젝트 > GAS 프레임워크 RPG 프로젝트' 카테고리의 다른 글
| 저장 시스템 - 1) 데이터 저장 방식 설정과 MVVM 플러그인 도입 (0) | 2025.12.18 |
|---|---|
| 화염 폭풍 스킬 - 최종) 화염구의 폭발 피해 추가 + 로컬에서의 GC 실행 (0) | 2025.12.13 |
| 비전 파편 스킬 - 최종) 쿨타임 + 코스트 적용 그리고 추가적인 설정 (2) (0) | 2025.12.09 |
| 비전 파편 스킬 - 최종) 쿨타임 + 코스트 적용 그리고 추가적인 설정 (1) (0) | 2025.12.09 |
| 비전 파편 스킬 - 4) 파편에 피격당한 적에게 피해 적용 (0) | 2025.12.07 |