728x90
반응형
이렇게 GameplayAbiliy.h에 들어가면 Given과 End 함수를 찾을 수 있다.
이 함수들을 override하자
GameplayAbility.h
UENUM(BlueprintType)
enum class EWarriorAbilityActivationPolicy : uint8
{
OnTriggered,
OnGiven,
};
/**
*
*/
UCLASS()
class WARRIOR_API UWarriorGameplayAbility : public UGameplayAbility
{
GENERATED_BODY()
protected:
//~ Begin Ability Interface
virtual void OnGiveAbility(const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilitySpec& Spec) override;
virtual void EndAbility(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo, bool bReplicateEndAbility, bool bWasCancelled) override;
//~ End Ability Interface
UPROPERTY(EditAnywhere, Category = "WarriorAbility")
EWarriorAbilityActivationPolicy AbilityActivationPolicy = EWarriorAbilityActivationPolicy::OnTriggered;
};
ENum Class로 사용해서, 알맞은 정책을 선택해준다.
GameplayAbility.cpp
void UWarriorGameplayAbility::OnGiveAbility(const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilitySpec& Spec)
{
Super::OnGiveAbility(ActorInfo, Spec);
if (AbilityActivationPolicy == EWarriorAbilityActivationPolicy::OnGiven)
{
if (ActorInfo && !Spec.IsActive())
{
ActorInfo->AbilitySystemComponent->TryActivateAbility(Spec.Handle);
}
}
}
void UWarriorGameplayAbility::EndAbility(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo, bool bReplicateEndAbility, bool bWasCancelled)
{
Super::EndAbility(Handle, ActorInfo, ActivationInfo, bReplicateEndAbility, bWasCancelled);
if (AbilityActivationPolicy == EWarriorAbilityActivationPolicy::OnGiven)
{
if (ActorInfo)
{
ActorInfo->AbilitySystemComponent->ClearAbility(Handle);
}
}
}
이렇게 OnGiven인지 정책을 먼저 확인하다.
맞으면 Ability를 활성화 시켜준다.
OnGiven에 대한 것이니, 끝날 때 능력을 Clear해준다.
이렇게 하면 알고리즘은 다 짠것이고,BP로 만들어주자
이렇게 해주면 무기 생성을 위한 기본적인 셋팅은 끝이다.
728x90
반응형
'UE5(언리얼)' 카테고리의 다른 글
[언리얼5/UE5] SpawnActor, AIController가 동작안할 (0) | 2024.11.22 |
---|---|
[언리얼5/UE5] 힘을 가하는 각종 함수(impulse, force, radial) (1) | 2024.11.16 |
[언리얼5/UE5] SpawnActor사용시 주의 (안움직임) (1) | 2024.11.14 |
[언리얼/UE5] 디버거 헬퍼 (0) | 2024.11.12 |
[언리얼5/UE5] 채팅창 만들기 (EditableText) (7) | 2024.11.07 |