fix(BT12-Dev): A12·A08·전수 FX ParticleSystem.Play(true) 명시 호출 (PD 지시 2026-05-13)

직전 b1b476a 영역 PoisonSwamp·SpiritFire 영역만 명시 Play 적용·나머지 4 Spawner + Projectile 영역 누락.

전수 적용:
- MeleeAreaSpawner.Trigger — OnHitFx (A05·A12 등) 영역 Play
- LightningStrikeSpawner.Trigger — OnHitFx·DelayedExtraHitFx Play
- LaserSpawner.Trigger — fx (A_Laser OnHit) Play
- ProjectileSpawner.Trigger — ProjectilePrefab (A02·A08 FX_PinkMagicArrow 등)·CastFxPrefab (A08 FX_PinkArrow_Shoot) Play
- Projectile.OnTriggerEnter2D — OnHitFx (A02·A08 등) Play

원인: 신규 import prefab 영역 playOnAwake 영역 정합 X 가능성 또는 Instantiate 시점 영역 Awake 호출 X·명시 Play 안전망 누락.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
깃 관리자 2026-05-13 23:22:02 +09:00
parent ebd0808034
commit 68843a8c44
5 changed files with 14 additions and 0 deletions

View File

@ -39,6 +39,8 @@ namespace EerieVillage.Skills.Effectors
fx.hideFlags = HideFlags.DontSave;
fx.transform.SetParent(inventory.transform, true);
fx.transform.localScale *= data.HitFxScale;
// PD 지시 2026-05-13 — ParticleSystem 명시 Play
foreach (var ps in fx.GetComponentsInChildren<ParticleSystem>(true)) ps.Play(true);
}
float fxLifetime = GetFxLifetime(fx);

View File

@ -65,6 +65,8 @@ namespace EerieVillage.Skills.Effectors
var fx = Object.Instantiate(data.OnHitFxPrefab, fxPos, Quaternion.Euler(0f, 0f, data.FxRotation));
fx.hideFlags = HideFlags.DontSave; // PD 지시 2026-05-13 — Scene 저장 회피
fx.transform.localScale *= data.HitFxScale;
// PD 지시 2026-05-13 — ParticleSystem 명시 Play
foreach (var ps in fx.GetComponentsInChildren<ParticleSystem>(true)) ps.Play(true);
fxTotalLifetime = GetFxLifetime(fx);
AutoDestroyFx(fx, fxTotalLifetime);
}
@ -113,6 +115,8 @@ namespace EerieVillage.Skills.Effectors
var extraFx = Object.Instantiate(data.ExtraHitFxPrefab, fxPos, Quaternion.Euler(0f, 0f, data.FxRotation));
extraFx.hideFlags = HideFlags.DontSave;
extraFx.transform.localScale *= data.HitFxScale;
// PD 지시 2026-05-13 — ParticleSystem 명시 Play
foreach (var ps in extraFx.GetComponentsInChildren<ParticleSystem>(true)) ps.Play(true);
AutoDestroyFx(extraFx, GetFxLifetime(extraFx));
}

View File

@ -40,6 +40,8 @@ namespace EerieVillage.Skills.Effectors
// PD 지시 2026-05-13 — 좌우 베기 이펙트가 Player 이동 시 뒤로 밀리는 현상 정정.
// Player 자식 부착 (worldPositionStays=true) 으로 spawn 후에도 Player 이동에 동조.
fxGo.transform.SetParent(inventory.transform, true);
// PD 지시 2026-05-13 — ParticleSystem 명시 Play
foreach (var ps in fxGo.GetComponentsInChildren<ParticleSystem>(true)) ps.Play(true);
fxLifetime = GetFxLifetime(fxGo);
// PD 지시 2026-05-13 — unscaledTime cap (Time.timeScale=0 영역 잔존 차단)
FxAutoDestroyUnscaled.Attach(fxGo, Mathf.Min(fxLifetime + 0.2f, 5f));

View File

@ -215,6 +215,8 @@ namespace EerieVillage.Skills.Effectors
var fx = Object.Instantiate(_data.OnHitFxPrefab, other.transform.position, Quaternion.Euler(0f, 0f, _data.FxRotation));
fx.hideFlags = HideFlags.DontSave; // PD 지시 2026-05-13 — Scene 저장 회피
fx.transform.localScale *= _data.HitFxScale;
// PD 지시 2026-05-13 — ParticleSystem 명시 Play
foreach (var ps in fx.GetComponentsInChildren<ParticleSystem>(true)) ps.Play(true);
AutoDestroyOnParticleEnd(fx);
}

View File

@ -41,6 +41,8 @@ namespace EerieVillage.Skills.Effectors
var castFx = Object.Instantiate(data.CastFxPrefab, playerTransform.position, Quaternion.Euler(0f, 0f, data.FxRotation));
castFx.hideFlags = HideFlags.DontSave;
castFx.transform.localScale *= data.HitFxScale;
// PD 지시 2026-05-13 — ParticleSystem 명시 Play
foreach (var ps in castFx.GetComponentsInChildren<ParticleSystem>(true)) ps.Play(true);
FxAutoDestroyUnscaled.Attach(castFx, 2f);
}
@ -65,6 +67,8 @@ namespace EerieVillage.Skills.Effectors
: CreateFallbackProjectile(data, (Vector3)spawnPos);
// PD 지시 2026-05-13 — 런타임 spawn 투사체 Scene 저장 회피 (Edit Mode execute 시 잔존 방지)
go.hideFlags = HideFlags.DontSave;
// PD 지시 2026-05-13 — ParticleSystem 명시 Play (ProjectilePrefab 영역 자체 FX·A08 FX_PinkMagicArrow 등)
foreach (var ps in go.GetComponentsInChildren<ParticleSystem>(true)) ps.Play(true);
// PD 지시 2026-05-13 — 시각화 ↔ 판정 정합 — BoxCollider2D size = HitboxSize·isTrigger=true.
// FX prefab 영역 기존 Collider2D 있으면 size 만 정합·없으면 신규 BoxCollider2D 부착.