EerieVillage/Assets/Scripts/Skills/Test/TestSkillFireOnA.cs

57 lines
2.2 KiB
C#
Raw Normal View History

using UnityEngine;
using UnityEngine.InputSystem;
using EerieVillage.Skills;
using EerieVillage.Skills.Effectors;
namespace EerieVillage.Skills.Test
{
/// <summary>
/// PD 지시 (2026-05-13) 테스트용 — 키보드 A 키 입력 시 지정 ActiveSkill 즉시 발사.
/// Player GameObject 에 부착. PlayerSkillInventory 도 같은 GameObject 또는 자식에 존재해야 함.
/// </summary>
[RequireComponent(typeof(PlayerSkillInventory))]
public class TestSkillFireOnA : MonoBehaviour
{
[Tooltip("발사 대상 ActiveSkillData (Resources/Skills/Active/A02_paieobol 기본)")]
public ActiveSkillData SkillData;
[Tooltip("Resources fallback 경로 (SkillData 인스펙터 부재 시 사용)")]
public string FallbackResourcePath = "Skills/Active/A02_paieobol";
PlayerSkillInventory _inventory;
ActiveSkillRuntime _runtime;
readonly ProjectileSpawner _projSpawner = new ProjectileSpawner();
readonly LightningStrikeSpawner _meleeSpawner = new LightningStrikeSpawner();
void Awake()
{
_inventory = GetComponent<PlayerSkillInventory>();
if (SkillData == null)
SkillData = Resources.Load<ActiveSkillData>(FallbackResourcePath);
if (SkillData != null)
{
_runtime = new ActiveSkillRuntime(SkillData);
_runtime.OnEquip(_inventory);
}
else
{
Debug.LogWarning($"[TestSkillFireOnA] SkillData NULL — {FallbackResourcePath} 영역 로드 실패");
}
}
void Update()
{
if (_runtime == null || _inventory == null) return;
if (Keyboard.current == null) return;
if (!Keyboard.current.aKey.wasPressedThisFrame) return;
// 카테고리별 발동기 — Projectile · MeleeArea (A04 번개 충격) 지원
if (SkillData.Category == ActiveCategory.Projectile)
_projSpawner.Trigger(_runtime, _inventory);
else if (SkillData.Category == ActiveCategory.MeleeArea)
_meleeSpawner.Trigger(_runtime, _inventory);
}
}
}