From e8779df12516775948d66a2cb5b1fa91e9b2ad4e Mon Sep 17 00:00:00 2001 From: swrring Date: Wed, 13 May 2026 19:32:34 +0900 Subject: [PATCH] =?UTF-8?q?fix(BT12-Dev):=20A05=C2=B7A=5FLaser=20=EB=B0=95?= =?UTF-8?q?=EC=8A=A4=20=EC=8B=9C=EA=B0=81=20off=20=EC=A0=95=EC=A0=95=20+?= =?UTF-8?q?=20Player=20=ED=94=BC=EA=B2=A9=20X=20=EC=A7=84=EB=8B=A8=20Debug?= =?UTF-8?q?.Log?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 작업 1 — A05·A_Laser 박스 SpriteRenderer.enabled 누락 정정: - MeleeAreaSpawner·LaserSpawner 영역 직접 GO 생성·SpriteRenderer 부착 (HitboxDebug 미경유 영역). - sr.enabled = HitboxDebug.ShowDebugVisuals 1줄 추가 (재활용 toggle 정합). 작업 2 — Player 피격 X 진단 Debug.Log 추가 (회수 의무): - EnemyController.Update L387-396 — VisualBounds.Intersects(Player.Bounds)·IsGrounded·IsInvulnerable 측정. - [EnemyHit][Intersect] (조건 측정)·[EnemyHit][Decrement] (실제 호출) 2종 prefix. - PD Console 측정 후 본 PM 가설 검증·근본 fix 후 Debug.Log 회수. - 본 PM 가설: (1) Enemy patrol 거리 영역 Player 근접 X (2) Enemy maxHearts=1 자동 공격 즉시 처치 (3) IsGrounded false 영역 통과. feedback_pm_root_diagnosis_priority 정합 — 가설 추정 사전 진단 우선. Co-Authored-By: Claude Opus 4.7 (1M context) --- Assets/Scripts/Mechanics/EnemyController.cs | 9 ++++++++- Assets/Scripts/Skills/Effectors/LaserSpawner.cs | 1 + Assets/Scripts/Skills/Effectors/MeleeAreaSpawner.cs | 1 + 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Assets/Scripts/Mechanics/EnemyController.cs b/Assets/Scripts/Mechanics/EnemyController.cs index 953ecdb..6a8e573 100644 --- a/Assets/Scripts/Mechanics/EnemyController.cs +++ b/Assets/Scripts/Mechanics/EnemyController.cs @@ -386,10 +386,17 @@ namespace Platformer.Mechanics } if (_cachedPlayer != null && _cachedPlayer.health != null && _cachedPlayer.health.IsAlive) { - if (_cachedPlayer.IsGrounded && VisualBounds.Intersects(_cachedPlayer.Bounds)) + // PD 지시 2026-05-13 — Player 피격 X 원인 진단 (회수 의무·PD Console 측정 후 본 PM revert) + bool intersects = VisualBounds.Intersects(_cachedPlayer.Bounds); + if (intersects) + { + Debug.Log($"[EnemyHit][Intersect] enemy={name} playerGrounded={_cachedPlayer.IsGrounded} playerInvuln={_cachedPlayer.health.IsInvulnerable} enemyVB=({VisualBounds.center.x:F2},{VisualBounds.center.y:F2},sz={VisualBounds.size.x:F2}x{VisualBounds.size.y:F2}) playerB=({_cachedPlayer.Bounds.center.x:F2},{_cachedPlayer.Bounds.center.y:F2},sz={_cachedPlayer.Bounds.size.x:F2}x{_cachedPlayer.Bounds.size.y:F2}) t={Time.time:F2}"); + } + if (_cachedPlayer.IsGrounded && intersects) { if (!_cachedPlayer.health.IsInvulnerable) { + Debug.Log($"[EnemyHit][Decrement] enemy={name} t={Time.time:F2}"); _cachedPlayer.health.Decrement(); } } diff --git a/Assets/Scripts/Skills/Effectors/LaserSpawner.cs b/Assets/Scripts/Skills/Effectors/LaserSpawner.cs index 25f7ced..86c2691 100644 --- a/Assets/Scripts/Skills/Effectors/LaserSpawner.cs +++ b/Assets/Scripts/Skills/Effectors/LaserSpawner.cs @@ -63,6 +63,7 @@ namespace EerieVillage.Skills.Effectors sr.sprite = HitboxDebug.GetWhiteSprite(); sr.color = new Color(1f, 0f, 0f, 0.35f); sr.sortingOrder = 100; + sr.enabled = HitboxDebug.ShowDebugVisuals; Object.Destroy(boxGo, fxLifetime + 0.2f); // PD 지시 2026-05-13 — DamageFrameDelay·반복 피해 영역 정합 (Player 영역 매 hit 시 영역 영역) diff --git a/Assets/Scripts/Skills/Effectors/MeleeAreaSpawner.cs b/Assets/Scripts/Skills/Effectors/MeleeAreaSpawner.cs index f30489c..211eb57 100644 --- a/Assets/Scripts/Skills/Effectors/MeleeAreaSpawner.cs +++ b/Assets/Scripts/Skills/Effectors/MeleeAreaSpawner.cs @@ -63,6 +63,7 @@ namespace EerieVillage.Skills.Effectors sr.sprite = HitboxDebug.GetWhiteSprite(); sr.color = new Color(1f, 0f, 0f, 0.35f); sr.sortingOrder = 100; + sr.enabled = HitboxDebug.ShowDebugVisuals; Object.Destroy(boxGo, duration); // PD 지시 2026-05-13 — DamageFrameDelay·반복 피해 영역 정합 (Player 영역 매 hit 시 영역 영역 영역)