게임플레이 어빌리티 코스트와 쿨다운은 게임플레이 이펙트로 구현할 수 있다.
1. 게임플레이 어빌리티 코스트(Gameplay Ability Costs)
캐릭터가 게임플레이 어빌리티를 사용할때 소모되는 것(마나 등)을 뜻한다.
(1) GE_Cost_Firebolt 파이어볼트 코스트 게임플레이 이펙트 생성
- 지속 정책(Duration Policy)는 Instant로 설정
- 수정자(Modifiers)는 임시적으로 하드코딩된 -20의 값으로 설정
(2) GA_Firebolt 게임플레이 어빌리티에 코스트 게임플레이 이펙트 클래스 할당
(3) GA_Firebolt에서 CommitAbility 함수 호출
- CommitAbility : 쿨다운과 코스트를 모두 사용
Commit Ability 함수는 코스트 소모에 성공하거나 쿨다운 중이 아니라면 True를 반환한다.
(스킬이 발동할 수 있으면 true)
따라서 이 불리언을 활용하여 쿨다운 중이거나, 코스트가 부족하다는 것을 화면에 띄울 수도 있다.
- Commit Ability 함수에 의해서, 코스트가 부족하거나 쿨다운 중이라면 어빌리티를 활성화하지 않는다.
또한 C++ 로직에 의해 ApplyCost의 함수 내에서 ApplyGameplayEffectToOwner 함수를 통해 코스트 게임플레이 이펙트가 적용되며, 게임플레이 어빌리티의 레벨(수준)에 따라 코스트를 증감시킬 수 있다.
커브 테이블을 사용하고 Magnitude로 -1을 넘겨주었다.
2. 게임플레이 어빌리티 쿨다운(Gameplay Ability Cooldowns / CoolTime)
(1) Native 게임플레이 태그 생성
어빌리티에 대한 쿨다운을 사용하기 위해서는 해당 어빌리티에 대응하는 쿨다운 태그가 필요하다.
// 어빌리티
FGameplayTag Abilities_Attack;
FGameplayTag Abilities_Summon;
FGameplayTag Abilities_Fire_FireBolt;
FGameplayTag Cooldown_Fire_FireBolt;
GameplayTags.Cooldown_Fire_FireBolt = UGameplayTagsManager::Get().AddNativeGameplayTag(
FName("Cooldown.Fire.FireBolt"),
FString("FireBolt Ability Cooldown")
);
(2) GE_Cooldown_Firebolt 파이어볼트 쿨다운 게임플레이 이펙트 생성
쿨다운(쿨타임)은 지속되므로 Has Duration으로 설정한다.
이전에 생성한 Native 게임플레이 태그도 할당한다.
(3) GA_Firebolt 게임플레이 어빌리티에 쿨다운 게임플레이 이펙트 클래스 할당
이제 설정한 Magnitude에 따른 시간이 지나야 어빌리티를 사용할 수 있다.
3. 몽타주가 중단된다면 확인
(1) Play Montage And Wait
Stop when Ability Ends 체크를 해제하면 어빌리티 종료와 상관없이 모션이 전부 재생된다.
(2) 클라이언트 환경
클라이언트에서 실행하면 모션이 정상적으로 작동하지 않을 수 있다.
어빌리티 종료 조건을 몽타주가 끝나거나 중단, 취소, 블렌드 중으로 변경한다.
'UE 5 스터디 > Gameplay Ability System(GAS)' 카테고리의 다른 글
19-9. 오버레이 UI - (7) 스펠 글로브에 쿨다운 시간 표기 (0) | 2025.01.14 |
---|---|
19-8. 비동기 태스크 - 스펠 글로브로 쿨다운 전달하기 (0) | 2025.01.14 |
19-6. 오버레이 UI - (6) 위젯에 어빌리티 정보 표시하기, 스펠 키매핑 변경하기 (0) | 2025.01.14 |
19-5. 오버레이 UI - (5) 오버레이 위젯 컨트롤러에서 위젯으로 어빌리티 정보 보내기 (0) | 2025.01.13 |
19-4. 오버레이 UI - (4) 어빌리티 정보 데이터 에셋 (0) | 2025.01.13 |