전투/UI
데미지 플로터가 뜨는 조건 (GAS)
- 데미지 GE가
ExecCalc_BasicHitDamage → IncomingDamage 메타 어트리뷰트를 거쳐야 CombatAttributeSet::BroadcastHitEvent가 Channel.Combat.DamageDealt를 발행한다.
BroadcastHitEvent는 GE의 GameplayEvent.Attack.HitSuccess.* 태그를 뽑아 그걸 키로 DT_HitFeedback을 조회(없으면 .Light 폴백). 매칭 행이 없으면 AttackFeedbackComponent가 플로터를 건너뛴다.
- ⇒ 새 공격에 플로터를 띄우려면: 데미지 GE에
HitSuccess.* 태그 + 해당 태그의 DT_HitFeedback 행 추가. 태그를 나누면(버스트 .Burst, 번 .Burn) 플로터를 따로 연출 가능.
원소모드 = ASC loose tag
- 현재 원소(불/물/바람)는
PlayerState::GetCurrentElementTag() = ASC의 Element.* loose 태그.
- 버스트/흡수는 게이지 슬롯 조합이 아니라 이 "현재 모드"로 결정. 게이지 슬롯은 원소 구분 없는 충전 칸이고, 색은 현재 모드 하나로 통일.
도트(DoT)는 사망 시 직접 제거해야 함
- 주기형 GE(GE_Burn)는 대상이 죽어도 계속 틱 → 시체에서 플로터가 계속 뜬다.
- 사망 처리(
HealthComponent::HandleHealthChanged, 권위 측)에서 ASC->RemoveActiveEffectsWithGrantedTags({State.Status.Burn})로 제거하면 멈춤.
UMG: 수동 RenderTransform은 위젯 애니에 덮어써진다
SetRenderScale() 직후 위젯 애니(RiseFade)가 같은 Render Transform(Scale 채널/트랜스폼 전체)을 키프레임하면 수동 스케일이 무시된다.
- ⇒ 애니는 위치+불투명도만 키, Scale은 빼거나 / 스케일은 부모·텍스트로 분리해 곱연산.