feat: 방어 시스템과 드로그 검증 경로 정리

- 애니메이션 이벤트 기반 방어/유지/해제 흐름과 HUD 피드백, 방어 디버그 로그를 추가했다.
- 드로그 기본기1 테스트 패턴을 정리하고 공격 판정을 OnEffect 기반으로 옮기며 드로그 범위 효과의 타겟 레이어를 정상화했다.
- 플레이어 퀵슬롯 테스트 세팅과 적-플레이어 겹침 방지 로직을 조정해 충돌 시 적이 수평 이동을 멈추고 최소 분리만 수행하게 했다.
This commit is contained in:
2026-04-07 21:28:52 +09:00
parent 147e9baa25
commit 0c9967d131
72 changed files with 231096 additions and 698 deletions

View File

@@ -25,6 +25,9 @@ namespace Colosseum.Player
[Tooltip("피격 제어 관리자")]
[SerializeField] private HitReactionController hitReactionController;
[Tooltip("방어 상태 관리자")]
[SerializeField] private PlayerDefenseController defenseController;
[Tooltip("관전 관리자")]
[SerializeField] private PlayerSpectator spectator;
@@ -145,7 +148,9 @@ namespace Colosseum.Player
if (!CanReceiveInput || IsStunned || IsStaggered || IsKnockbackActive || IsDowned)
return 0f;
return abnormalityManager != null ? abnormalityManager.MoveSpeedMultiplier : 1f;
float abnormalityMultiplier = abnormalityManager != null ? abnormalityManager.MoveSpeedMultiplier : 1f;
float defenseMultiplier = defenseController != null ? defenseController.MoveSpeedMultiplier : 1f;
return abnormalityMultiplier * defenseMultiplier;
}
}
@@ -159,6 +164,8 @@ namespace Colosseum.Player
skillController = GetComponent<SkillController>();
if (hitReactionController == null)
hitReactionController = GetOrCreateHitReactionController();
if (defenseController == null)
defenseController = GetOrCreateDefenseController();
if (spectator == null)
spectator = GetComponentInChildren<PlayerSpectator>();
}
@@ -195,5 +202,14 @@ namespace Colosseum.Player
return gameObject.AddComponent<HitReactionController>();
}
private PlayerDefenseController GetOrCreateDefenseController()
{
PlayerDefenseController foundController = GetComponent<PlayerDefenseController>();
if (foundController != null)
return foundController;
return gameObject.AddComponent<PlayerDefenseController>();
}
}
}