fix(BT12-Dev): A08 시전 이펙트 facing 방향 정합 + 진단 Log 회수 (PD 지시 2026-05-13)

원인: CastFx Instantiate 영역 = Quaternion.Euler(0, 0, data.FxRotation) (=0) 영역. FX_PinkArrow_Shoot sprite left 기본 → 시전 영역 sprite left 표시·Player right 발사 방향과 반대.

fix:
- ProjectileSpawner.Trigger CastFx — facing angle + ProjectileAngleOffset + FxRotation 적용 (Projectile 본체 동일 패턴)
- 진단 Debug.Log 2종 회수 ([ProjectileSpawner] card·CastFx spawned·[Projectile] OnHit) — fileID 정정 완료·root 원인 확정 후 revert

A08 영역 ProjectileAngleOffset=180 영역 정합 (sprite left → right) → CastFx·Projectile 동일 방향.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
깃 관리자 2026-05-13 23:51:27 +09:00
parent 447ea9200e
commit 7ad3319e7c
2 changed files with 3 additions and 10 deletions

View File

@ -219,8 +219,6 @@ namespace EerieVillage.Skills.Effectors
// PD 지시 2026-05-13 — ParticleSystem 명시 Play
foreach (var ps in fx.GetComponentsInChildren<ParticleSystem>(true)) ps.Play(true);
AutoDestroyOnParticleEnd(fx);
// PD 지시 2026-05-13 — 진단 (회수 의무)
Debug.Log($"[Projectile] OnHit card={_data.CardId} OnHitFx spawned name={fx.name} pos=({fx.transform.position.x:F2},{fx.transform.position.y:F2})");
}
// 부가 효과 (DoT·Stun·Slow·DebuffStack) — StatusApplier 위임

View File

@ -36,20 +36,15 @@ namespace EerieVillage.Skills.Effectors
+ data.OffsetXY;
// PD 지시 2026-05-13 — 시전 FX (A08 저주의 화살 등) Player 위치 spawn
// PD 지시 2026-05-13 — 진단 (회수 의무): CastFx·ProjectilePrefab·OnHitFx 영역 매핑 측정
string castName = data.CastFxPrefab != null ? data.CastFxPrefab.name : "NULL";
string projName = data.ProjectilePrefab != null ? data.ProjectilePrefab.name : "NULL";
string hitName = data.OnHitFxPrefab != null ? data.OnHitFxPrefab.name : "NULL";
UnityEngine.Debug.Log($"[ProjectileSpawner] card={data.CardId} CastFx={castName} ProjPrefab={projName} OnHitFx={hitName}");
// facing+ProjectileAngleOffset+FxRotation 영역 적용 (Projectile 본체 동일 패턴·sprite 반대 방향 정정)
if (data.CastFxPrefab != null)
{
var castFx = Object.Instantiate(data.CastFxPrefab, playerTransform.position, Quaternion.Euler(0f, 0f, data.FxRotation));
float castAngle = Mathf.Atan2(facing.y, facing.x) * Mathf.Rad2Deg + data.ProjectileAngleOffset + data.FxRotation;
var castFx = Object.Instantiate(data.CastFxPrefab, playerTransform.position, Quaternion.Euler(0f, 0f, castAngle));
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);
UnityEngine.Debug.Log($"[ProjectileSpawner] CastFx spawned name={castFx.name} pos=({castFx.transform.position.x:F2},{castFx.transform.position.y:F2})");
}
// 프리팹 로드 (data.ProjectilePrefab 우선·없으면 fallback)