From 41fa4e4ce7257d86119d68ec76d1533bd699b98c Mon Sep 17 00:00:00 2001 From: swrring Date: Wed, 13 May 2026 20:24:05 +0900 Subject: [PATCH] =?UTF-8?q?chore(BT12-Dev):=20=EC=A7=84=EB=8B=A8=20Debug.L?= =?UTF-8?q?og=20=ED=9A=8C=EC=88=98=20(PD=20=EC=A0=95=ED=95=A9=20=EC=9E=91?= =?UTF-8?q?=EB=8F=99=20=ED=99=95=EC=9D=B8=20=ED=9B=84)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 회수 5종: - ProjectileSpawner.Trigger — [ProjectileSpawner] Trigger - Projectile.Initialize — [Projectile][Initialize] - Projectile.SelfDestruct — [Projectile][SelfDestruct] - Projectile.OnDestroy (메서드 자체) — [Projectile][OnDestroy] - EnemyController.Update — [EnemyHit][Intersect]·[EnemyHit][Decrement] 보존: - Projectile.Update lifetime backup SelfDestruct (Log 영역 제거·동작 영역 유지·잔존 차단) - Initialize 시 CancelInvoke (안전망 유지) feedback_pm_root_diagnosis_priority 정합 — 근본 원인 (Time.timeScale=0 영역 Invoke 정지·NullReferenceException race) 확정·fix 정합 후 진단 Log revert. Co-Authored-By: Claude Opus 4.7 (1M context) --- Assets/Scripts/Mechanics/EnemyController.cs | 11 +++-------- Assets/Scripts/Skills/Effectors/Projectile.cs | 12 ------------ Assets/Scripts/Skills/Effectors/ProjectileSpawner.cs | 2 -- 3 files changed, 3 insertions(+), 22 deletions(-) diff --git a/Assets/Scripts/Mechanics/EnemyController.cs b/Assets/Scripts/Mechanics/EnemyController.cs index e039525..d60b305 100644 --- a/Assets/Scripts/Mechanics/EnemyController.cs +++ b/Assets/Scripts/Mechanics/EnemyController.cs @@ -386,18 +386,13 @@ namespace Platformer.Mechanics } if (_cachedPlayer != null && _cachedPlayer.health != null && _cachedPlayer.health.IsAlive) { - // PD 지시 2026-05-13 — "닿아도 X" 재 보고. Bounds.Intersects 영역 너무 좁은 가능성 → distance 기반 fix. - // 진단 Debug.Log 추가 (회수 의무·PD Console 측정 후 본 PM revert). + // PD 지시 2026-05-13 — VisualBounds.Intersects OR distance < 1.5f 단일 조건·ground·공중 무관 피격 float dist = Vector2.Distance(transform.position, _cachedPlayer.transform.position); bool boundsHit = VisualBounds.Intersects(_cachedPlayer.Bounds); bool distHit = dist < 1.5f; - if (boundsHit || distHit) + if ((boundsHit || distHit) && !_cachedPlayer.health.IsInvulnerable) { - Debug.Log($"[EnemyHit] enemy={name} dist={dist:F2} boundsHit={boundsHit} distHit={distHit} invuln={_cachedPlayer.health.IsInvulnerable} enemyPos=({transform.position.x:F2},{transform.position.y:F2}) playerPos=({_cachedPlayer.transform.position.x:F2},{_cachedPlayer.transform.position.y:F2}) t={Time.time:F2}"); - if (!_cachedPlayer.health.IsInvulnerable) - { - _cachedPlayer.health.Decrement(); - } + _cachedPlayer.health.Decrement(); } } } diff --git a/Assets/Scripts/Skills/Effectors/Projectile.cs b/Assets/Scripts/Skills/Effectors/Projectile.cs index a5796c1..76b14ab 100644 --- a/Assets/Scripts/Skills/Effectors/Projectile.cs +++ b/Assets/Scripts/Skills/Effectors/Projectile.cs @@ -88,9 +88,6 @@ namespace EerieVillage.Skills.Effectors // PD 지시 2026-05-13 — Invoke 폐기 (Time.timeScale=0 영역 호출 X·영구 잔존 원인)·unscaledTime backup 영역 lifetime 영역 보장 // CancelInvoke 호출 영역 추가 안전 (이전 영역 영역 Invoke 영역 잔존 차단) CancelInvoke(); - - // PD 지시 2026-05-13 — 진단 (회수 의무·잔존 추적) - Debug.Log($"[Projectile][Initialize] name={name} dir=({_direction.x:F2},{_direction.y:F2}) speed={_speed:F2} maxRange={_maxRange:F2} lifetime={_lifetime:F2} t={Time.unscaledTime:F2}"); } // BT12-Dev 2026-05-13 — 사거리 80~100% 영역 scale·alpha 보간 (PD 지시) @@ -139,7 +136,6 @@ namespace EerieVillage.Skills.Effectors // PD 지시 2026-05-13 — unscaledTime 영역 lifetime check (Time.timeScale=0 영역 Time.time 정지 영역 회피·재시작 시 영구 잔존 차단) if (_spawnTime > 0f && Time.unscaledTime - _spawnTime > _lifetime) { - Debug.Log($"[Projectile][LifetimeForce] name={name} spawn={_spawnTime:F2} now={Time.unscaledTime:F2} lifetime={_lifetime:F2}"); SelfDestruct(); return; } @@ -253,18 +249,10 @@ namespace EerieVillage.Skills.Effectors protected void SelfDestruct() { - // PD 지시 2026-05-13 — 투사체 잔상 진단 (회수 의무) - Debug.Log($"[Projectile][SelfDestruct] name={name} pos=({transform.position.x:F2},{transform.position.y:F2}) t={Time.time:F2}"); CancelInvoke(nameof(SelfDestruct)); Destroy(gameObject); } - // PD 지시 2026-05-13 — 투사체 잔상 진단 (회수 의무·Destroy 호출 외 경로 영역 영역 영역 검출) - void OnDestroy() - { - Debug.Log($"[Projectile][OnDestroy] name={name} t={Time.time:F2}"); - } - // PD 지시 2026-05-13 — 시각화 박스 자식 reference (Update 영역 매 frame Inspector 정합 갱신용) protected Transform _debugBoxTransform; diff --git a/Assets/Scripts/Skills/Effectors/ProjectileSpawner.cs b/Assets/Scripts/Skills/Effectors/ProjectileSpawner.cs index cbef3e6..64eed74 100644 --- a/Assets/Scripts/Skills/Effectors/ProjectileSpawner.cs +++ b/Assets/Scripts/Skills/Effectors/ProjectileSpawner.cs @@ -82,8 +82,6 @@ namespace EerieVillage.Skills.Effectors proj.Initialize(runtime, inventory, dir); } - // PD 지시 2026-05-13 — 진단 (회수 의무·잔존 추적) - UnityEngine.Debug.Log($"[ProjectileSpawner] Trigger card={data.CardId} count={count} facing=({facing.x:F2},{facing.y:F2}) t={Time.time:F2}"); } ///