using UnityEngine; using UnityEngine.InputSystem; using EerieVillage.Skills.Effectors; namespace EerieVillage.Skills.Test { /// /// PD 지시 (2026-05-13) 테스트용 — 키보드 1~5 키 영역 각 ActiveSkill 즉시 발사. /// 1: A02 화염부 (파이어볼·Projectile) /// 2: A04 뇌격부 (번개 충격·MeleeArea) /// 3: A05 학익진 (Fan Slash·MeleeArea) /// 4: 레이저 (Dragonfire Laser·MeleeArea) /// 5: A13 천둥발 (Lightningball·Projectile Piercing) /// [RequireComponent(typeof(PlayerSkillInventory))] public class TestSkillFireOn1to5 : MonoBehaviour { [Tooltip("키 1 (현재 A02 화염부)")] public ActiveSkillData Skill1; [Tooltip("키 2 (현재 A04 뇌격부)")] public ActiveSkillData Skill2; [Tooltip("키 3 (A05 학익진)")] public ActiveSkillData Skill3; [Tooltip("키 4 (레이저)")] public ActiveSkillData Skill4; [Tooltip("키 5 (A13 천둥발)")] public ActiveSkillData Skill5; PlayerSkillInventory _inventory; ActiveSkillRuntime[] _runtimes = new ActiveSkillRuntime[5]; readonly ProjectileSpawner _projSpawner = new ProjectileSpawner(); readonly LightningStrikeSpawner _lightningSpawner = new LightningStrikeSpawner(); readonly MeleeAreaSpawner _meleeSpawner = new MeleeAreaSpawner(); readonly LaserSpawner _laserSpawner = new LaserSpawner(); void Awake() { EnsureRuntimes(); } // PD 지시 2026-05-13 — Awake 시점 Inspector reference 미정합 가능성 대비 lazy init. void EnsureRuntimes() { if (_inventory == null) _inventory = GetComponent(); ActiveSkillData[] datas = { Skill1, Skill2, Skill3, Skill4, Skill5 }; for (int i = 0; i < 5; i++) { if (_runtimes[i] != null) continue; if (datas[i] == null) continue; _runtimes[i] = new ActiveSkillRuntime(datas[i]); _runtimes[i].OnEquip(_inventory); } } void Update() { EnsureRuntimes(); if (Keyboard.current == null) return; if (Keyboard.current.digit1Key.wasPressedThisFrame) Fire(0); else if (Keyboard.current.digit2Key.wasPressedThisFrame) Fire(1); else if (Keyboard.current.digit3Key.wasPressedThisFrame) Fire(2); else if (Keyboard.current.digit4Key.wasPressedThisFrame) Fire(3); else if (Keyboard.current.digit5Key.wasPressedThisFrame) Fire(4); } void Fire(int idx) { var rt = _runtimes[idx]; if (rt == null || _inventory == null) return; var data = rt.ActiveData; // 카테고리 분기 if (data.Category == ActiveCategory.Projectile) { _projSpawner.Trigger(rt, _inventory); } else if (data.Category == ActiveCategory.MeleeArea) { // 키 2 (A04 번개 충격) — LightningStrikeSpawner // 키 3 (A05 학익진) — MeleeAreaSpawner // 키 4 (레이저) — LaserSpawner if (idx == 1) _lightningSpawner.Trigger(rt, _inventory); else if (idx == 3) _laserSpawner.Trigger(rt, _inventory); else _meleeSpawner.Trigger(rt, _inventory); } } } }