diff --git a/Assets/Scripts/Mechanics/EnemyController.cs b/Assets/Scripts/Mechanics/EnemyController.cs index 1f52380..46c25d3 100644 --- a/Assets/Scripts/Mechanics/EnemyController.cs +++ b/Assets/Scripts/Mechanics/EnemyController.cs @@ -105,6 +105,18 @@ namespace Platformer.Mechanics // Layer 14 (Enemy) ↔ Layer 14 collide X·전역 1회 적용 (Awake 영역 매번 호출 무관·idempotent). Physics2D.IgnoreLayerCollision(14, 14, true); + // PD 지시 2026-05-15 — Animator.runtimeAnimatorController name 영역 M002 (박쥐) 영역 IsFlying=true 자동 + // (MonsterRandomizer 부재·Animator 직접 controller 부착 케이스 보강) + if (!IsFlying) + { + var anim = GetComponent(); + if (anim != null && anim.runtimeAnimatorController != null + && anim.runtimeAnimatorController.name.Contains("M002")) + { + IsFlying = true; + } + } + // PD 지시 2026-05-15 — 날으는 몬스터 영역 중력 무효 + collide 무시 (이동 정합) if (IsFlying && control != null) { diff --git a/Assets/Scripts/Mechanics/MonsterRandomizer.cs b/Assets/Scripts/Mechanics/MonsterRandomizer.cs index d18feda..86c25c8 100644 --- a/Assets/Scripts/Mechanics/MonsterRandomizer.cs +++ b/Assets/Scripts/Mechanics/MonsterRandomizer.cs @@ -26,10 +26,15 @@ namespace Platformer.Mechanics var anim = GetComponent(); if (anim == null) return; int idx = Random.Range(0, overrideControllers.Length); - anim.runtimeAnimatorController = overrideControllers[idx]; + var selected = overrideControllers[idx]; + anim.runtimeAnimatorController = selected; // PD 지시 2026-05-15 — 박쥐 선택 시 EnemyController.IsFlying=true 자동 set - if (flyingFlags != null && idx < flyingFlags.Length && flyingFlags[idx]) + // flyingFlags Inspector 설정 우선 · 미설정 시 controller name fallback (M002 = 박쥐) + bool isFlying = false; + if (flyingFlags != null && idx < flyingFlags.Length && flyingFlags[idx]) isFlying = true; + else if (selected != null && selected.name.Contains("M002")) isFlying = true; + if (isFlying) { var ec = GetComponent(); if (ec != null) ec.IsFlying = true;