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());
}
'게임프로그래밍 > 실습2' 카테고리의 다른 글
[실습2] 49. Set by Coller로 데미지 설정하기 (0) | 2024.12.05 |
---|---|
[실습2] 48. 메타 어트리뷰트 (0) | 2024.12.05 |
[실습2] 46. 서버에서 타겟 데이터 수신하기 (0) | 2024.12.04 |
[실습2] 45. 마우스 커서 데이터 서버로 보내기 (0) | 2024.12.04 |
[실습2] 44. 어빌리티 태스크 (0) | 2024.12.04 |