- 개요
특정한 Tag가 연결된 입력을 수행하면 어빌리티를 발동하고
발동하는 어빌리티에서 Task를 수행하여 어빌리티의 타겟을 판단한다
이후 투사체에 GameplayEffect를 적용하여 적중당한 타겟에게 피해를 주도록 구성한다
또 몬스터에게 체력바 UI를 추가하여 입은 피해를 시각화한다
1) AuraProjectileSpell 클래스

생성할 투사체에 부여할 GameplayEffect 멤버 변수를 추가한다

SpawnProjectile 함수에 런타임에서 사용하기 위한 GESpecHandle을 생성하는 로직을 추가한다
어빌리티를 발동한 AvatarActor로부터 ASC를 가져와 GESpecHandle을 생성하고 투사체에 설정한다
2) AuraProjectile 클래스

GameplayEffect를 런타임에서 사용하기 위한 GESpecHandle 멤버 변수를 추가한다

OnSphereOverlap 함수에 Overlap된 타겟의 ASC를 가져와 GameplayEffect를 적용하는 로직을 추가한다
3) AuraEnemy 클래스

OverlayWidgetController 클래스에 포함되어 있던 Attribute 델리게이트 멤버변수를 추가한다

몬스터의 체력바 UI 역할을 수행할 WidgetComponent 멤버변수를 추가한다

생성자에서 WidgetComponent 멤버 변수를 SubObject 방식으로 생성한다
이후 생성한 SubObject를 RootComponent에 Attach한다

BeginPlay 함수에 로직을 추가한다
UIComponent 멤버변수에서 UserWidget을 가져와 AuraUserWidget으로 캐스팅하여 반환한다
반환한 AuraUserWdiget의 WidgetController를 설정한다
이후 ASC의 GetGameplayAttributeValueChangeDelegate 함수를 호출하여
Health와 MaxHealth의 값이 변경되면 델리게이트 멤버변수를 통해 브로드캐스트하도록 람다함수를 바인드한다
최종적으로 BeginPlay 함수가 호출된 시점의 Health와 MaxHealth 값을 브로드캐스트한다
4) 언리얼 에디터
4 - 1) 데미지를 주는 GameplayEffect 블루 프린트

위와 같이 Health 어트리뷰트에 -10의 값을 주도록 설정하였다
4 - 2) GA_FireBolt 블루 프린트

투사체에 설정할 GameplayEffect를 위와 같이 설정하였다
4 - 3) WBP_EnemyHealthBar 위젯 블루 프린트



위의 시퀀스를 거쳐서 몬스터의 체력바 UI에 대한 설정을 진행한다
최종적으로 Health 어트리뷰트와 MaxHealth 어트리뷰트가 변경되면 UI가 갱신된다
4 - 4) BP_EnemyBase 블루 프린트

WidgetComponent를 위와 같이 설정하였다
- 최종 실행 결과
'언리얼 엔진 - 게임 프로젝트 > GAS 프레임워크 RPG 프로젝트' 카테고리의 다른 글
| 데미지 처리 - 1) SetByCaller 방식을 사용한 Tag에 따른 데미지 값 설정 (0) | 2025.08.22 |
|---|---|
| RPG 직업군 - 최종) RPG 직업군 생성 및 AttributeSet 설정 (0) | 2025.08.21 |
| AbilityTasks - 4) 투사체 충돌 처리 (0) | 2025.08.18 |
| AbilityTasks - 3) 클릭한 대상을 향해 투사체와 캐릭터의 방향 일치시키기 (0) | 2025.08.17 |
| AbilityTasks - 2) AnimNotify를 사용한 이벤트 발동 + Task를 사용하여 어빌리티의 타겟 데이터 가져오기 (0) | 2025.08.16 |