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

@@ -872,16 +872,43 @@ namespace Colosseum.Player
private void OnSkill6Canceled(InputAction.CallbackContext context) => OnSkillCanceled();
/// <summary>
/// 스킬 버튼 해제 시 채널링 중단을 알립니다.
/// 스킬 버튼 해제 시 반복 유지 단계 중단을 알립니다.
/// </summary>
private void OnSkillCanceled()
{
if (skillController != null && skillController.IsChannelingActive)
if (skillController != null && skillController.CurrentSkill != null && skillController.CurrentSkill.RequiresLoopHold)
{
skillController.NotifyChannelHoldReleased();
skillController.NotifyLoopHoldReleased();
if (IsOwner)
RequestChannelHoldReleaseRpc();
}
}
/// <summary>
/// 반복 유지 입력 해제를 서버에 알리고, 다른 클라이언트에도 종료를 동기화합니다.
/// </summary>
[Rpc(SendTo.Server)]
private void RequestChannelHoldReleaseRpc()
{
if (skillController == null || skillController.CurrentSkill == null || !skillController.CurrentSkill.RequiresLoopHold)
return;
skillController.NotifyLoopHoldReleased();
SyncChannelHoldReleaseRpc();
}
/// <summary>
/// 서버에서 확정된 반복 유지 종료를 클라이언트에 전파합니다.
/// </summary>
[Rpc(SendTo.NotServer)]
private void SyncChannelHoldReleaseRpc()
{
if (skillController == null || skillController.CurrentSkill == null || !skillController.CurrentSkill.RequiresLoopHold)
return;
skillController.NotifyLoopHoldReleased();
}
private PlayerActionState GetOrCreateActionState()
{
var foundState = GetComponent<PlayerActionState>();