From b1b476a0619869387e35ef9f921020f65b634b94 Mon Sep 17 00:00:00 2001 From: swrring Date: Wed, 13 May 2026 23:10:32 +0900 Subject: [PATCH] =?UTF-8?q?fix(BT12-Dev=20Phase=20B):=20FX=20=EC=9E=AC?= =?UTF-8?q?=EC=83=9D=20X=20=E2=80=94=20ParticleSystem=20=EB=AA=85=EC=8B=9C?= =?UTF-8?q?=20Play=20+=20Collider=20=EC=9E=90=EC=8B=9D=20=EB=B6=84?= =?UTF-8?q?=EB=A6=AC=20(PD=20=EB=B3=B4=EA=B3=A0=202026-05-13)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 원인 추정: - PoisonSwampInstance 영역 BoxCollider2D·Rigidbody2D 영역 FX root 직접 부착 → ParticleSystem 영역 영향 가능 - Instantiate playOnAwake 정합·그러나 명시 Play() 호출 안전망 영역 누락 fix: - PoisonSwampSpawner.Trigger — FX root 영역 GetComponentsInChildren(true) 영역 명시 ps.Play(true) - PoisonSwampInstance — BoxCollider2D·Rigidbody2D 영역 자식 GO 분리 (PoisonSwamp_Collider)·FX root 영역 visualRoot 보관·duration 종료 시 함께 Destroy - PoisonedEnemyMarker.Tick — FX_Venom_Spray 영역 동일 ParticleSystem.Play(true) 명시 호출 - SpiritFireSpawner.Trigger — 동일 명시 Play(true) 호출 Co-Authored-By: Claude Opus 4.7 (1M context) --- .../Skills/Effectors/PoisonSwampSpawner.cs | 28 ++++++++++++++++--- .../Skills/Effectors/SpiritFireSpawner.cs | 5 ++++ 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/Assets/Scripts/Skills/Effectors/PoisonSwampSpawner.cs b/Assets/Scripts/Skills/Effectors/PoisonSwampSpawner.cs index 7244687..18e0086 100644 --- a/Assets/Scripts/Skills/Effectors/PoisonSwampSpawner.cs +++ b/Assets/Scripts/Skills/Effectors/PoisonSwampSpawner.cs @@ -50,6 +50,11 @@ namespace EerieVillage.Skills.Effectors { swampGo = Object.Instantiate(data.OnHitFxPrefab, spawnPos, Quaternion.identity); swampGo.transform.localScale *= data.HitFxScale; + // PD 지시 2026-05-13 — ParticleSystem 명시 Play (playOnAwake 영역 정합·재발 안전망) + foreach (var ps in swampGo.GetComponentsInChildren(true)) + { + ps.Play(true); + } } else { @@ -58,8 +63,14 @@ namespace EerieVillage.Skills.Effectors } swampGo.hideFlags = HideFlags.DontSave; - var instance = swampGo.AddComponent(); - instance.Init(data, Mathf.Max(data.BaseCooldown, 1f)); + // PD 지시 2026-05-13 — BoxCollider2D·Rigidbody2D 영역 자식 GO 분리 (ParticleSystem 영역 root 영향 차단) + var colliderGo = new GameObject("PoisonSwamp_Collider"); + colliderGo.hideFlags = HideFlags.DontSave; + colliderGo.transform.SetParent(swampGo.transform, false); + colliderGo.transform.localPosition = Vector3.zero; + + var instance = colliderGo.AddComponent(); + instance.Init(data, Mathf.Max(data.BaseCooldown, 1f), swampGo); } } @@ -72,12 +83,14 @@ namespace EerieVillage.Skills.Effectors float _spawnTime; float _duration; BoxCollider2D _col; + GameObject _swampVisualRoot; // PD 지시 2026-05-13 — FX GO 영역 별도·duration 종료 시 함께 Destroy - public void Init(ActiveSkillData data, float duration) + public void Init(ActiveSkillData data, float duration, GameObject visualRoot) { _data = data; _duration = duration; _spawnTime = Time.unscaledTime; + _swampVisualRoot = visualRoot; // 자식 BoxCollider2D 부착·HitboxSize 영역 정합 _col = gameObject.AddComponent(); @@ -99,7 +112,9 @@ namespace EerieVillage.Skills.Effectors { if (Time.unscaledTime - _spawnTime >= _duration) { - Destroy(gameObject); + // FX 영역 root 영역 함께 Destroy + if (_swampVisualRoot != null) Destroy(_swampVisualRoot); + else Destroy(gameObject); } } @@ -160,6 +175,11 @@ namespace EerieVillage.Skills.Effectors var fx = Object.Instantiate(_data.OnDotFxPrefab, transform.position, Quaternion.Euler(0f, 0f, _data.FxRotation), transform); fx.hideFlags = HideFlags.DontSave; fx.transform.localScale *= _data.DotFxScale; + // PD 지시 2026-05-13 — ParticleSystem 명시 Play (playOnAwake 영역 정합·재발 안전망) + foreach (var ps in fx.GetComponentsInChildren(true)) + { + ps.Play(true); + } FxAutoDestroyUnscaled.Attach(fx, 1.5f); } diff --git a/Assets/Scripts/Skills/Effectors/SpiritFireSpawner.cs b/Assets/Scripts/Skills/Effectors/SpiritFireSpawner.cs index 27bfc73..e93c1fd 100644 --- a/Assets/Scripts/Skills/Effectors/SpiritFireSpawner.cs +++ b/Assets/Scripts/Skills/Effectors/SpiritFireSpawner.cs @@ -24,6 +24,11 @@ namespace EerieVillage.Skills.Effectors { shieldGo = Object.Instantiate(data.OnHitFxPrefab, spawnPos, Quaternion.identity, inventory.transform); shieldGo.transform.localScale *= data.HitFxScale; + // PD 지시 2026-05-13 — ParticleSystem 명시 Play (playOnAwake 영역 정합·재발 안전망) + foreach (var ps in shieldGo.GetComponentsInChildren(true)) + { + ps.Play(true); + } } else {