2026-01-29 06:58:38 +00:00
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
|
|
|
|
[CreateAssetMenu(fileName = "NewWeapon", menuName = "Weapons/Config")]
|
|
|
|
|
|
public class WeaponConfig : ScriptableObject
|
|
|
|
|
|
{
|
|
|
|
|
|
[Header("기본 능력치")]
|
|
|
|
|
|
[SerializeField] private float baseDamage = 10f;
|
|
|
|
|
|
[SerializeField] private int requiredStrength = 5;
|
|
|
|
|
|
|
|
|
|
|
|
public float BaseDamage => baseDamage;
|
|
|
|
|
|
public int RequiredStrength => requiredStrength;
|
|
|
|
|
|
|
|
|
|
|
|
[Header("애니메이션 설정")]
|
|
|
|
|
|
[SerializeField] private string normalAttackTrigger = "Attack";
|
|
|
|
|
|
[SerializeField] private string chargingBool = "IsCharging";
|
|
|
|
|
|
[SerializeField] private string throwTrigger = "Throw";
|
|
|
|
|
|
|
|
|
|
|
|
public string NormalAttackTrigger => normalAttackTrigger;
|
|
|
|
|
|
public string ChargingBool => chargingBool;
|
|
|
|
|
|
public string ThrowTrigger => throwTrigger;
|
|
|
|
|
|
|
|
|
|
|
|
[Header("차징 단계별 설정 (인스펙터 수정)")]
|
|
|
|
|
|
[SerializeField] private float forceLv1 = 10f;
|
2026-01-29 16:11:10 +00:00
|
|
|
|
[SerializeField] private float spreadLv1 = 25f;
|
2026-01-29 06:58:38 +00:00
|
|
|
|
[SerializeField] private float forceLv2 = 18f;
|
|
|
|
|
|
[SerializeField] private float spreadLv2 = 8f;
|
|
|
|
|
|
[SerializeField] private float forceLv3 = 28f;
|
2026-01-29 16:11:10 +00:00
|
|
|
|
// Lv3 Spread는 인스펙터에서 보이지 않게 하거나, 로직에서 무시하도록 처리합니다.
|
2026-01-29 06:58:38 +00:00
|
|
|
|
|
2026-01-29 16:11:10 +00:00
|
|
|
|
// ⭐ 힘(Force)은 단계별로 가져옵니다.
|
2026-01-29 06:58:38 +00:00
|
|
|
|
public float GetForce(int lv) => lv == 3 ? forceLv3 : (lv == 2 ? forceLv2 : forceLv1);
|
2026-01-29 16:11:10 +00:00
|
|
|
|
|
|
|
|
|
|
// ⭐ [수정] 정확도(Spread) 로직: 3단계는 무조건 0(직선) 반환!
|
|
|
|
|
|
public float GetSpread(int lv)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (lv == 3) return 0f; // 풀차징은 무조건 일자로 날아감
|
|
|
|
|
|
return (lv == 2) ? spreadLv2 : spreadLv1;
|
|
|
|
|
|
}
|
2026-01-29 06:58:38 +00:00
|
|
|
|
}
|