using UnityEngine; namespace BumpCombat.Constants { [CreateAssetMenu(menuName = "BumpCombat/Constants/Combat")] public sealed class CombatConstants : ScriptableObject { [Header("몸통박치기 방향 판정")] [Tooltip("적 정면으로 분류하는 방향 내적 기준"), Range(-1f, 1f)] public float FrontThreshold = 0.707f; [Tooltip("적 후방으로 분류하는 방향 내적 기준"), Range(-1f, 1f)] public float BackThreshold = -0.5f; [Tooltip("측면 또는 정면 비껴치기 피해 배율"), Min(0f)] public float PositionDamageMultiplier = 1.2f; [Tooltip("후방 몸통박치기 피해 배율"), Min(0f)] public float BackDamageMultiplier = 1.5f; [Header("몸통박치기 피해")] [Min(0f)] public float BaseDamage = 10f; [Tooltip("대시 아티팩트 정의가 피해량을 지정하지 않을 때 사용하는 대체 피해량"), Min(0f)] public float DashDamage = 20f; [Tooltip("충전 대시 아티팩트 정의가 피해량을 지정하지 않을 때 사용하는 대체 피해량"), Min(0f)] public float StrongDashDamage = 30f; [Min(0f)] public float MinimumAttackSpeed = 0.5f; [Range(-1f, 1f)] public float MinimumApproachDot = 0.25f; [Header("넉백과 반동")] [Min(0f)] public float KnockbackForce = 1f; [Min(0f)] public float DashKnockbackForce = 3f; [Min(0f)] public float StrongDashKnockbackForce = 4f; [Min(0f)] public float StrongDashLaunchHeight = 0.65f; [Min(0.01f)] public float StrongDashLaunchDuration = 0.32f; [Min(0f)] public float PlayerImpactRecoilDistance = 0.08f; [Min(1f)] public float FrontKnockbackMultiplier = 1.5f; [Min(0f)] public float FrontPlayerImpactRecoilDistance = 0.24f; [Min(0f)] public float EventBackPlayerImpactRecoilDistance = 0.12f; [Min(0f)] public float ShieldedPlayerImpactRecoilDistance = 0.75f; [Header("판정 간격과 범위")] [Min(0f)] public float MinimumOffsetDistance = 0.16f; [Min(0f)] public float NormalHitInterval = 0.25f; [Min(0f)] public float DashContactSkin = 0.02f; [Min(0f)] public float DashFallbackCastRadius = 0.22f; } }