From 2ee50842300a5863091ac7ce8365c5766eb3b0b1 Mon Sep 17 00:00:00 2001 From: swrring Date: Thu, 14 May 2026 00:02:47 +0900 Subject: [PATCH] =?UTF-8?q?fix(BT12-Dev):=20Projectile=20=EC=9E=90?= =?UTF-8?q?=EC=97=B0=20fade=20SelfDestruct=20(PD=20=EC=A7=80=EC=8B=9C=2020?= =?UTF-8?q?26-05-14)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 원인: SelfDestruct 영역 즉시 Destroy(gameObject) → ParticleSystem 영역 진행 영역 trail·glow particle 즉시 사라짐 → 발사 영역 영역 영역 매번 시각 cut → "뚝뚝 끊기는" 인식. fix: - _fadeOutStarted flag — 중복 호출 차단 - Collider2D·_debugBoxTransform disable — 판정 종료 - _speed = 0 — 이동 정지 - ParticleSystem.Stop(true, StopEmitting) — emission 정지·기존 particle 자연 fade - Destroy(gameObject, 0.5f) — 0.5s 후 Destroy (기존 particle lifetime 영역 자연 fade 완료) - FADE_START_RATIO 0.8 → 0.85 (sprite fadeout 영역 영역 영역·자연 영역 영역) Co-Authored-By: Claude Opus 4.7 (1M context) --- Assets/Scripts/Skills/Effectors/Projectile.cs | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/Assets/Scripts/Skills/Effectors/Projectile.cs b/Assets/Scripts/Skills/Effectors/Projectile.cs index 51917e5..842bf94 100644 --- a/Assets/Scripts/Skills/Effectors/Projectile.cs +++ b/Assets/Scripts/Skills/Effectors/Projectile.cs @@ -34,7 +34,7 @@ namespace EerieVillage.Skills.Effectors protected Renderer[] _renderers; protected MaterialPropertyBlock _mpb; protected float[] _baseAlphas; - const float FADE_START_RATIO = 0.8f; + const float FADE_START_RATIO = 0.85f; /// /// ProjectileSpawner.Trigger 에서 Instantiate 직후 호출. @@ -253,10 +253,29 @@ namespace EerieVillage.Skills.Effectors } } + // PD 지시 2026-05-14 — 즉시 Destroy 영역 trail·glow particle 영역 즉시 영역 영역 영역 → 자연 fade out 후 Destroy + bool _fadeOutStarted = false; protected void SelfDestruct() { + if (_fadeOutStarted) return; + _fadeOutStarted = true; CancelInvoke(nameof(SelfDestruct)); - Destroy(gameObject); + + // 판정 종료 — Collider·자식 박스 즉시 disable·중복 hit 차단 + var col = GetComponent(); + if (col != null) col.enabled = false; + if (_debugBoxTransform != null) _debugBoxTransform.gameObject.SetActive(false); + // 이동 정지 + _speed = 0f; + + // ParticleSystem 영역 emission stop·기존 particle 영역 자연 fade + foreach (var ps in GetComponentsInChildren(true)) + { + ps.Stop(true, ParticleSystemStopBehavior.StopEmitting); + } + + // 0.5s 후 Destroy (기존 particle lifetime 영역 충분 영역 영역) + Destroy(gameObject, 0.5f); } // PD 지시 2026-05-13 — 시각화 박스 자식 reference (Update 영역 매 frame Inspector 정합 갱신용)