Gameplay Abilities 최하단에 구현되어 있는 Costs & Cooldowns

 

게임플레이 어빌리티 코스트와 쿨다운은 게임플레이 이펙트로 구현할 수 있다.

 

 

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) 클라이언트 환경

클라이언트에서 실행하면 모션이 정상적으로 작동하지 않을 수 있다.

어빌리티 종료 조건을 몽타주가 끝나거나 중단, 취소, 블렌드 중으로 변경한다.