2026-05-10 08:40:06 +00:00
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Platformer.Mechanics
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
2026-05-10 16:37:54 +00:00
|
|
|
|
/// 몬스터 종류 랜덤 — 6 AnimatorOverrideController random select.
|
|
|
|
|
|
/// PD 지시 (2026-05-11): 몬스터 종류 랜덤 변경.
|
|
|
|
|
|
/// 6종 (M001~M006) Idle Clip override·Animator runtimeAnimatorController random.
|
2026-05-10 08:40:06 +00:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
public class MonsterRandomizer : MonoBehaviour
|
|
|
|
|
|
{
|
2026-05-10 16:37:54 +00:00
|
|
|
|
[Tooltip("이전 호환 — 24 sprite (6종 × 4 frame). Override Controller 신규 영역 후속 폐기 가능.")]
|
2026-05-10 08:50:28 +00:00
|
|
|
|
public Sprite[] idleFrames;
|
2026-05-10 08:40:06 +00:00
|
|
|
|
|
2026-05-10 16:37:54 +00:00
|
|
|
|
[Tooltip("6 AnimatorOverrideController (M001~M006).")]
|
|
|
|
|
|
public AnimatorOverrideController[] overrideControllers;
|
2026-05-10 08:40:06 +00:00
|
|
|
|
|
2026-05-14 15:18:06 +00:00
|
|
|
|
// PD 지시 2026-05-15 — 날으는 몬스터 영역 (M002 박쥐 등)
|
|
|
|
|
|
// overrideControllers 영역 동일 length·true 영역 EnemyController.IsFlying=true 자동 set
|
|
|
|
|
|
[Tooltip("각 overrideController 영역 IsFlying flag (동일 length). 박쥐 등 공중 몬스터 영역 true.")]
|
|
|
|
|
|
public bool[] flyingFlags;
|
|
|
|
|
|
|
2026-05-10 08:50:28 +00:00
|
|
|
|
void Awake()
|
|
|
|
|
|
{
|
2026-05-10 16:37:54 +00:00
|
|
|
|
if (overrideControllers == null || overrideControllers.Length == 0) return;
|
|
|
|
|
|
var anim = GetComponent<Animator>();
|
|
|
|
|
|
if (anim == null) return;
|
|
|
|
|
|
int idx = Random.Range(0, overrideControllers.Length);
|
2026-05-14 15:31:55 +00:00
|
|
|
|
var selected = overrideControllers[idx];
|
|
|
|
|
|
anim.runtimeAnimatorController = selected;
|
2026-05-14 15:18:06 +00:00
|
|
|
|
|
|
|
|
|
|
// PD 지시 2026-05-15 — 박쥐 선택 시 EnemyController.IsFlying=true 자동 set
|
2026-05-14 15:31:55 +00:00
|
|
|
|
// 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)
|
2026-05-14 15:18:06 +00:00
|
|
|
|
{
|
|
|
|
|
|
var ec = GetComponent<EnemyController>();
|
|
|
|
|
|
if (ec != null) ec.IsFlying = true;
|
|
|
|
|
|
}
|
2026-05-10 08:40:06 +00:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|