using UnityEngine; namespace BumpCombat.Constants { [CreateAssetMenu(menuName = "BumpCombat/Constants/Combat Feedback")] public sealed class CombatFeedbackSettings : ScriptableObject { [Header("히트스톱 (초)")] [Min(0f)] public float NormalHitStopDuration = 0.045f; [Min(0f)] public float BackHitStopDuration = 0.06f; [Min(0f)] public float DashHitStopDuration = 0.055f; [Min(0f)] public float StrongDashHitStopDuration = 0.075f; [Min(0f)] public float DamageHitStopDuration = 0.04f; [Header("타격·피격 표시 (초)")] [Min(0f)] public float FlashDuration = 0.07f; [Min(0f)] public float DamageFlashDuration = 0.12f; [Min(0f)] public float ImpactDuration = 0.14f; [Min(0f)] public float SlashDuration = 0.11f; [Min(0f)] public float AfterimageDuration = 0.16f; [Min(0f)] public float InvulnerabilityBlinkInterval = 0.06f; [Range(0f, 1f)] public float InvulnerabilityBlinkAlpha = 0.35f; [Header("카메라 흔들림")] [Tooltip("흔들림 지속시간 (초)"), Min(0f)] public float CameraShakeDuration = 0.12f; [Tooltip("일반 흔들림 크기 (픽셀)"), Min(0f)] public float CameraShakePixels = 3f; [Tooltip("강한 흔들림 크기 (픽셀)"), Min(0f)] public float HeavyCameraShakePixels = 5f; [Tooltip("강한 피격으로 표시하는 넉백 거리 (유닛)"), Min(0f)] public float HeavyKnockbackThreshold = 1f; [Header("무적 적 몸통박치기 표시")] [Tooltip("유지시간 (초)"), Min(0f)] public float BlockedBumpHoldDuration = 0.08f; [Tooltip("사라지는 시간 (초)"), Min(0f)] public float BlockedBumpFadeDuration = 0.04f; [Tooltip("수직 오프셋 (유닛)")] public float BlockedBumpVerticalOffset = 0.35f; [Header("가드 차단 불꽃")] [Tooltip("유지시간 (초)"), Min(0f)] public float GuardBlockImpactHoldDuration = 0.08f; [Tooltip("사라지는 시간 (초)"), Min(0f)] public float GuardBlockImpactFadeDuration = 0.1f; [Tooltip("최소 생성 간격 (초)"), Min(0f)] public float GuardBlockImpactInterval = 0.08f; [Tooltip("공격자 방향 오프셋 (유닛)"), Min(0f)] public float GuardBlockImpactOffset = 0.35f; [Header("동시 표시 제한")] [Tooltip("무거운 일회성 효과의 최대 동시 개수"), Min(1)] public int MaxConcurrentHeavyEffects = 12; [Header("회오리 이동 버프 잔상")] [Tooltip("최소 생성 간격 (초)"), Min(0.001f)] public float CycloneAfterimageInterval = 0.06f; [Tooltip("잔상 유지시간 (초)"), Min(0f)] public float CycloneAfterimageDuration = 0.22f; [Tooltip("최대 동시 잔상 수"), Min(1)] public int MaxCycloneAfterimages = 4; } }