Unreal Engine GAS(Gameplay Ability System) 심화LESSON 39
Gameplay Tag로 스턴, 침묵, 무적 제어하기
난이도심화
예상 시간195분
선수지식38강의 네트워크 책임 경계
39강. Gameplay Tag로 스턴, 침묵, 무적 제어하기
1. 이번 강의에서 해결할 문제
캐릭터에 bStunned, bSilenced, bInvulnerable을 계속 추가하면 중첩 출처와 종료 순서를 관리하기 어렵습니다. 두 스턴 중 하나가 끝났다고 이동이 풀리거나 무적 중 데미지가 들어오는 문제를 Tag count와 Effect 수명으로 해결합니다.
2. 학습 목표
3. 핵심 개념
State.CrowdControl.Stun, State.CrowdControl.Silence, State.Defense.Invulnerable처럼 상태 Tag를 계층화합니다. 스턴 Effect가 Tag를 부여하고 Ability의 Activation Blocked Tags가 이를 참조합니다. 이미 실행 중인 Ability를 끊을지는 Activation 차단과 별도 정책이며, Cancel Abilities with Tag 또는 상태 변경 이벤트에서 명시합니다.
4. 구현
GA_SpellBase.cpp
UGA_SpellBase::UGA_SpellBase()
{
ActivationBlockedTags.AddTag(TAG_State_CrowdControl_Silence);
AbilityTags.AddTag(TAG_Ability_Type_Spell);
}
스턴 Tag 변화 처리
void UGASCombatComponent::BindControlTags()
{
ASC->RegisterGameplayTagEvent(TAG_State_CrowdControl_Stun,
EGameplayTagEventType::NewOrRemoved)
.AddUObject(this, &ThisClass::HandleStunChanged);
}
void UGASCombatComponent::HandleStunChanged(FGameplayTag, int32 Count)
{
if (Count > 0)
{
FGameplayTagContainer CancelTags(TAG_Ability_Behavior_CancelOnStun);
ASC->CancelAbilities(&CancelTags);
}
OnStunStateChanged.Broadcast(Count > 0);
}
GE_Invulnerable은 면역 요구 조건이나 데미지 Execution의 캡처 Tag 검사로 데미지 Effect를 거절합니다. 클라이언트 UI가 무적을 보여도 최종 차단은 서버 Effect 적용 경로에서 수행합니다.
5. 코드가 동작하는 이유
Tag count는 여러 Effect 출처가 겹쳐도 마지막 출처가 사라질 때까지 상태를 유지합니다. Ability는 공통 Tag 계약을 보므로 캐릭터별 Boolean에 결합되지 않습니다. 상태의 적용·해제·면역이 ASC 기록에 남아 디버깅도 쉬워집니다.
6. 실패 사례와 해결
7. 직접 실습
8. 이해 점검 질문 3개
9. 핵심 요약
MINI QUIZ
0 / 2Gameplay Tag로 스턴, 침묵, 무적 제어하기 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
LESSON STATUS
39강. Gameplay Tag로 스턴, 침묵, 무적 제어하기 미완료 상태학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.