fix(BT12-Dev): Projectile 자연 fade SelfDestruct (PD 지시 2026-05-14)

원인: 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) <noreply@anthropic.com>
This commit is contained in:
깃 관리자 2026-05-14 00:02:47 +09:00
parent 6ed6efe6a2
commit 2ee5084230
1 changed files with 21 additions and 2 deletions

View File

@ -34,7 +34,7 @@ namespace EerieVillage.Skills.Effectors
protected Renderer[] _renderers; protected Renderer[] _renderers;
protected MaterialPropertyBlock _mpb; protected MaterialPropertyBlock _mpb;
protected float[] _baseAlphas; protected float[] _baseAlphas;
const float FADE_START_RATIO = 0.8f; const float FADE_START_RATIO = 0.85f;
/// <summary> /// <summary>
/// ProjectileSpawner.Trigger 에서 Instantiate 직후 호출. /// 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() protected void SelfDestruct()
{ {
if (_fadeOutStarted) return;
_fadeOutStarted = true;
CancelInvoke(nameof(SelfDestruct)); CancelInvoke(nameof(SelfDestruct));
Destroy(gameObject);
// 판정 종료 — Collider·자식 박스 즉시 disable·중복 hit 차단
var col = GetComponent<Collider2D>();
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<ParticleSystem>(true))
{
ps.Stop(true, ParticleSystemStopBehavior.StopEmitting);
}
// 0.5s 후 Destroy (기존 particle lifetime 영역 충분 영역 영역)
Destroy(gameObject, 0.5f);
} }
// PD 지시 2026-05-13 — 시각화 박스 자식 reference (Update 영역 매 frame Inspector 정합 갱신용) // PD 지시 2026-05-13 — 시각화 박스 자식 reference (Update 영역 매 frame Inspector 정합 갱신용)