728x90
반응형
이번에는 기존의 Duration Policy가 Instant 였던 GE 대신
Duration Policy가 Has Duration으로 설정되어 설정한 시간동안만 적용되는 GE를 만들어보겠습니다.
그전에 먼저 EffectActor의 코드를 수정하여
InstantGameplayEffect 말고도 DurationGameplayEffect도 처리할 수 있도록 수정하겠습니다.
1) GE를 적용할 AuraEffectActor
.
.
.
UCLASS()
class AURA_API AAuraEffectActor : public AActor
{
GENERATED_BODY()
public:
AAuraEffectActor();
protected:
virtual void BeginPlay() override;
/*
* Gameplay Effect Section
*/
UFUNCTION(BlueprintCallable)
void ApplyEffectToTarget(AActor* TargetActor, TSubclassOf<UGameplayEffect> GameplayEffectClass);
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Applied Effects")
TSubclassOf<UGameplayEffect> InstantGameplayEffectClass;
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Applied Effects")
TSubclassOf<UGameplayEffect> DurationGameplayEffectClass;
};
이제 나머지 작업은 언리얼 에디터에서 진행하겠습니다.
2) 언리얼 에디터
일정시간동안 적용될 GameplayEffect는 다음과 같습니다.
AuraAttributeSet의 MaxHealth 값을 2초동안 100 증가시켜보겠습니다.
이를 수행하는 블루 프린트 클래스는 다음과 같이 동작합니다.
이제 적용이 되는지 한번 확인해보겠습니다.
실제로 GE가 적용되어 MaxHealth가 증가하였고
이 변동사항이 UI에 적용되어 Health / MaxHealth 값에 따라 보여지던 체력바 UI가 변했다가,
2초 후에 다시 원래대로 돌아오는 것을 확인할 수 있습니다.
728x90
반응형