From 88839f28a5bf74c8f9dc3f9566da8d0437e27a68 Mon Sep 17 00:00:00 2001 From: 99jamin <99jamin56@gmail.com> Date: Tue, 13 May 2025 13:25:55 +0900 Subject: [PATCH] =?UTF-8?q?DEG-143-=EB=8C=80=EC=8B=9C=20=EC=BF=A8=ED=83=80?= =?UTF-8?q?=EC=9E=84=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/JAY/Scripts/PlayerController.cs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Assets/JAY/Scripts/PlayerController.cs b/Assets/JAY/Scripts/PlayerController.cs index 651f91bc..9742975c 100644 --- a/Assets/JAY/Scripts/PlayerController.cs +++ b/Assets/JAY/Scripts/PlayerController.cs @@ -26,6 +26,7 @@ public class PlayerController : CharacterBase, IObserver private WeaponController _weaponController; private float attackUpgradeLevel; private float moveSpeedUpgradeLevel; + private float dashCooldownUpgradeLevel; private IPlayerState _currentStateClass { get; set; } private IPlayerAction _currentAction; @@ -50,6 +51,13 @@ public class PlayerController : CharacterBase, IObserver public CharacterController CharacterController => _characterController; public bool IsBattle => _isBattle; public Transform DashEffectAnchor => dashEffectAnchor; + + // 대시 쿨타임 관련 + [SerializeField] private float dashCooldownDuration = 1.5f; + private float dashCooldownTimer = 0f; + public bool IsDashOnCooldown => dashCooldownTimer > 0f; + public float DashCooldownRatio => dashCooldownTimer / dashCooldownDuration; + private void Awake() { @@ -77,9 +85,11 @@ public class PlayerController : CharacterBase, IObserver //강화 적용 attackUpgradeLevel = 1 + (float)UpgradeManager.Instance.upgradeStat.CurrentUpgradeLevel(StatType.AttackPower)/2; moveSpeedUpgradeLevel = 1 + (float)UpgradeManager.Instance.upgradeStat.CurrentUpgradeLevel(StatType.MoveSpeed)/2; + dashCooldownUpgradeLevel = (float)UpgradeManager.Instance.upgradeStat.CurrentUpgradeLevel(StatType.DashCoolDown)/4; attackPower *= attackUpgradeLevel; moveSpeed *= moveSpeedUpgradeLevel; + dashCooldownDuration -= dashCooldownUpgradeLevel; } private void Update() @@ -89,6 +99,10 @@ public class PlayerController : CharacterBase, IObserver _playerStates[CurrentState].Update(); } + // 대시 쿨타임 진행 + if (dashCooldownTimer > 0f) + dashCooldownTimer -= Time.deltaTime; + // Hit 상태거나 게임 끝났을 땐 땐 입력 무시 if (CurrentState == PlayerState.Hit || CurrentState == PlayerState.Dead || CurrentState == PlayerState.Win) return; @@ -239,6 +253,13 @@ public class PlayerController : CharacterBase, IObserver { if (!_isBattle) return; + // 쿨타임 중이면 무시 + if (IsDashOnCooldown) + { + Debug.Log("대시 쿨타임 중"); + return; + } + // 만약 공격 중이면 강제로 공격 종료 if (_currentAction == _attackAction && _attackAction.IsActive) { @@ -252,6 +273,9 @@ public class PlayerController : CharacterBase, IObserver _currentAction = _actionDash; _actionDash.StartAction(this); + + // 쿨타임 시작 + dashCooldownTimer = dashCooldownDuration; } public void OnActionEnded(IPlayerAction action)