게임프로그래밍/실습2
[실습2] 47. 발사체에 대미지 부여 효과를 주는 게임플레이 이펙트 적용하기
우승자는메이
2024. 12. 4. 20:24
1. 게임플레이 이펙트 발사체에 적용하기
게임플레이 이펙트 클래스를 만들고 이것을 발사체에 적용하는 방법을 알아보자.
발사체의 헤더파일로 간다.
게임플레이 이펙트 스펙 핸들을 만들어 이곳에서 게임플레이 이펙트를 관리할 것이다.
UPROPERTY(BlueprintReadWrite, meta = (ExposeOnSpawn = true))
FGameplayEffectSpecHandle DamageEffectSpecHandle;
이제 이 핸들의 설정은 이 발사체를 생성하는 게임플레이어빌리티에서 설정할 것이다.
게임 플레이 이펙트를 저장할 변수를 만든다.
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
TSubclassOf<UGameplayEffect> DamageEffectClass;
스펙 핸들을 만들어야 할 것이다.
이제 ASC를 가져와 게임플레이 이펙트를 설정해주면 된다.
UAbilitySystemComponent* SourceASC = UAbilitySystemBlueprintLibrary::GetAbilitySystemComponent(GetAvatarActorFromActorInfo());
FGameplayEffectSpecHandle SpecHandle = SourceASC->MakeOutgoingSpec(DamageEffectClass, GetAbilityLevel(), SourceASC->MakeEffectContext());
Projectile->DamageEffectSpecHandle = SpecHandle;
이제 핸들을 가지게 되었으니 실제로 효과를 적용할 일만 남았다.
발사체 클래스로 가도록 하자.
이렇게 하면 게임플레이 이펙트를 적용할 수 있을 것이다.
if (UAbilitySystemComponent* TargetASC = UAbilitySystemBlueprintLibrary::GetAbilitySystemComponent(OtherActor))
{
TargetASC->ApplyGameplayEffectSpecToSelf(*DamageEffectSpecHandle.Data.Get());
}