언리얼 엔진 - 게임 프로젝트/GAS 프레임워크 RPG 프로젝트

화염 폭풍 스킬 - 1) 쿨타임과 소모비용 + 동작방식 구현

monstro 2025. 12. 12. 16:58
728x90
반응형

- 개요

화염 폭풍 스킬플레이어 주의의 원형의 범위로 여러개의 화염구를 발사하고 

적중하지 않은 화염구들은 다시 플레이어에게 돌아오도록 구성하였다

화염 폭풍 스킬에서 사용하는 화염구 기존의 화염구와는 다른 방식으로 동작하도록 설계한다

 

- C++ 사이드

1) DefaultGameplayTags.ini

 

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

 

2) AuraGameplayTags 클래스

화염 폭풍 스킬의 GameplayTag 추가

 

화염 폭풍 스킬의 GameplayTag 생성

 

위와 같이 화염 폭풍 스킬의 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 함수를 호출하여 OwnerInstigator를 설정
    • 스폰한 화염구의 DamageEffectParamsReturnToActor를 설정
    • 설정이 끝난 화염구를 지역 컨테이너에 저장하고 FinishSpawning 함수를 호출하여 스폰 종료
  • 데이터가 저장된 지역 컨테이너를 반환

 

- 블루프린트 사이드

1) DA_AbilityInfo 데이터 애셋

 

화염폭풍 스킬 어빌리티에 관련한 정보를 위와 같이 추가한다

 

2) BP_FireBall 블루프린트

1) IsWithinExplodeDistance 함수

IsWithinExplodeDistance 함수

 

IsWithinExplodeDistance 함수를 위와 같이 구성한다

현재 화염구의 위치화염구가 돌아갈 위치의 차이를 계산하여

화염구의 폭발범위인 ExplodeDistance 이내인지 판단하여 판단한 값을 반환한다

 

2) EventGraph - StartOutgoingTimeline 이벤트

StartOutgoingTimeline 이벤트 로직 (1)

 

StartOutgoingTimeline 이벤트의 첫 번째 로직은 위와 같다

  • 생성된 화염구의 최초 위치 InitialLocation 변수에 저장
  • 생성된 화염구가 도착할 목표 위치 ApexLocation 변수에 저장

 

StartOutgoingTimeline 이벤트 로직 (2)

 

두 번째 로직은 위와 같은데,

InitialLocation에서 ApexLocation으로 설정된 타임라인 동안 부드럽게 이동하는 애니메이션을 구현한다

 

StartOutgoingTimeline 이벤트 로직 (3)

 

마지막 로직은 위와 같이 구성하였다

  • ApexLocation으로 설정한 마지막 타임라인에 화염구가 도착
  • ReturnToActor의 위치로 화염구를 다시 부드럽게 이동
  • IsWithinExplodeDistance 함수를 호출하여 True이면서 + 서버라면
    • OnHit 함수를 호출 + 화염구 파괴

 

3) GE_Cooldown_FireBlast 블루프린트

 

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

 

 

HasDuration 옵션을 설정하여 5초의 쿨타임을 적용한다

 

4) GE_Cost_FireBlast 블루프린트

 

화염 폭풍 스킬을 사용하기 위한 비용을 위와 같이 설정하여 선형적으로 Mana를 소모한다

 

5) GA_FireBlast 블루프린트

설정 (1)

 

설정 (2)

 

설정 (3)

 

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

 

 

ActivateAbility 이벤트의 로직을 위와 같이 구성하여 어빌리티를 부여 -> 화염구를 생성 -> 어빌리티를 종료한다

 

- 최종 실행 결과

 

728x90
반응형