스킬마다 별도의 콜라이더를 생성하지 않고, 하나의 오버랩 이벤트에서
CurrentActiveHitBoxSkill상태값에 따라 로직을 분기했습니다. 이를 통해 불필요한 컴포넌트 생성을 막아 메모리를 최적화하고, 데미지 공식 관리를 일원화하여 유지보수성이 높은 모듈형 구조를 설계했습니다.
//Boss1.cpp
void ABoss1::OnHitBoxOverlap(...)
{
//... 유효성 검사 ...
float DamageToApply = 0.f;
//단일 히트박스 컴포넌트 재사용 (Component Reuse)
//현재 활성화된 스킬 타입(Enum)에 따라 데미지 계수 차등 적용
switch (CurrentActiveHitBoxSkill)
{
case EBossSkillHitBox::DashCharge:
DamageToApply = DashChargeDamage;
break;
case EBossSkillHitBox::SparkWave:
DamageToApply = SparkWaveDamage;
break;
case EBossSkillHitBox::SpinAttack:
DamageToApply = SpinAttackDamage; // 광역 판정
break;
//... 기타 스킬 케이스 ...
}
//최종 데미지 적용
if (UPlayerDamageComponent* PlayerDamage = PlayerPawn->FindComponentByClass<UPlayerDamageComponent>())
{
PlayerDamage->DealDamage(DamageToApply, this);
}
}