using UnityEngine; namespace BumpCombat.Constants { [CreateAssetMenu(menuName = "BumpCombat/Constants/Player")] public sealed class PlayerConstants : ScriptableObject { [Header("기본 능력치")] [Tooltip("플레이어 기본 이동 속도 (유닛/초)"), Min(0f)] public float BaseMoveSpeed = 3f; [Tooltip("플레이어 기본 최대 체력"), Min(1f)] public float BaseMaxHealth = 100f; [Header("피격")] [Tooltip("피격 뒤 무적시간 (초)"), Min(0f)] public float InvulnerabilityDuration = 1f; [Tooltip("피격 넉백 지속시간 (초)"), Min(0f)] public float KnockbackDuration = 0.14f; [Tooltip("Hurt 이동 잠금시간 (초)"), Min(0f)] public float HurtMovementLockDuration = 0.5f; [Tooltip("Hurt 종료 뒤 무적에 더하는 여유시간 (초)"), Min(0f)] public float HurtRecoveryPadding = 0.5f; [Header("연속 처치 이속 보너스")] [Tooltip("연속 처치 인정 시간창 (게임 초)"), Min(0f)] public float PressureStreakWindowSeconds = 3f; [Tooltip("보너스 발동에 필요한 몸통박치기 처치 수"), Min(1)] public int PressureStreakKillTarget = 3; [Tooltip("연속 처치 보너스 이동속도 증가율"), Range(0f, 1f)] public float PressureStreakMoveSpeedIncrease = 0.2f; [Tooltip("연속 처치 보너스 지속시간 (게임 초)"), Min(0f)] public float PressureStreakDuration = 3f; [Header("가드")] [Tooltip("가드 재사용 대기시간 (초)"), Min(0f)] public float GuardCooldownDuration = 10f; [Tooltip("가드 무적 지속시간 (초)"), Min(0f)] public float GuardDuration = 1f; [Tooltip("가드가 실제 공격을 막았을 때 회복하는 쿨타임 비율 (%)"), Range(0f, 100f)] public float GuardSuccessCooldownRechargePercent = 70f; [Header("전장 가장자리 fallback")] [Tooltip("ArenaBounds가 없는 테스트 장면에서 사용하는 전장 반너비/반높이")] public Vector2 ArenaHalfExtents = new(15f, 8.4375f); [Tooltip("ArenaBounds가 없는 테스트 장면의 플레이어 가장자리 여백")] public Vector2 ArenaPadding = new(0.5f, 0.625f); } }