1. 개요
게임 플레이 이펙트는 데미지, 체력 회복, 이동 속도 증가, 상태 이상 등 캐릭터의 속성을 변경하는데 사용된다.
오늘은 게임 플레이 이펙트에 대해 살펴보자.
2. 게임플레이 이펙트 (GameplayEffect)
1. 역할
- AttributesSet의 FGameplateAttributeData와 GameplayTag를 변경한다.
- AttributesSet이 변경되면 델리게이트로 이벤트를 감지할 수 있다.
- 델리게이트에 연결된 함수가 호출되면 원하는 상호작용(HP 변경, 피격 모션, 사운드 출력)을 할 수 있다.
2. 특징
- UGameplayEffect 클래스이다.
- 데이터만 저장한다. (로직을 작성하지 않는다.)
- 자신의 고유 레벨을 가지며 효과의 가중치를 조절한다.
- 수정자(Modifiers)와 실행자(Executions)로 해당 속성 변경한다.
3. 게임플레이 이펙트 적용 과정
0. 게임 플레이 클래스를 정의한다.
1. 트리거가 발생한다.
2. 트리거를 통해 상호작용한 액터가 AbilitySystemComponent(ASC)를 소유했는지 파악한다.
3. 정의한 게임 플레이 클래스로 게임플레이 이펙트를 생성한다.
- 게임플레이 이펙트를 생성한 주체(Source)를 저장한다.
- 레벨별 효과 정도를 설정한다.
4. 생성한 게임플레이 이펙트를 적용한다.
1. 게임플레이 클래스 정의

블루프린트로 GameplayEffect를 상속받아 생성한다.
2. 트리거 발생
트리거가 발생하는 경우는 다양하다.
물리적 상호작용
- Trigger Volume: 특정 영역에 오브젝트가 들어갈 때 발생한다.
- Collision : 두 개의 액터가 충돌하면 트리거가 활성화된다.
입력 이벤트
- 키보드, 마우스 또는 컨트롤러 입력에 따라 트리거 발생한다.
타이머 기반
- 특정 시간이 경과했을 때 트리거가 발생한다.
3. 게임플레이 이펙트 생성 및 적용
// ASC 컴포넌트를 소유하고 있는지 확인한다.
UAbilitySystemComponent* TargetASC = UAbilitySystemBlueprintLibrary::GetAbilitySystemComponent(TargetActor);
if (TargetASC == nullptr) return;
check(GameplayEffectClass);
// EffectContext를 생성하고 이펙트 근원지(Source)를 정의한다.
FGameplayEffectContextHandle EffectContextHandle = TargetASC->MakeEffectContext();
EffectContextHandle.AddSourceObject(this);
// Effect를 적용한다.
TargetASC->ApplyGameplayEffectSpecToSelf(*EffectSpecHandle.Data.Get());
GameplayEffect에 다양한 효과를 구현하기 위해 수정자(Modifiers)와 실행자(Executions)도 계속 살펴볼 예정이다.
'Unrael > GAS (GameplayAbilitySystem)' 카테고리의 다른 글
| [GAS] 게임플레이 이펙트 - Instant (1) | 2025.01.14 |
|---|---|
| [UE/GAS] AbilitySystemComponent 생성하기 (0) | 2025.01.06 |