From 90a58c832ac76b408fe73a2f24fd00b19624c245 Mon Sep 17 00:00:00 2001 From: 99jamin <99jamin56@gmail.com> Date: Tue, 13 May 2025 14:00:41 +0900 Subject: [PATCH] =?UTF-8?q?DEG-143[Fix]=20=EB=B3=91=ED=95=A9=20=EB=B2=84?= =?UTF-8?q?=EA=B7=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/JAY/Scripts/PlayerController.cs | 35 ++++++++++++++++++++++++++ Assets/KSH/PlayerStats.cs | 29 ++++++++++++++++++++- 2 files changed, 63 insertions(+), 1 deletion(-) diff --git a/Assets/JAY/Scripts/PlayerController.cs b/Assets/JAY/Scripts/PlayerController.cs index b3720cfe..8bf60c1e 100644 --- a/Assets/JAY/Scripts/PlayerController.cs +++ b/Assets/JAY/Scripts/PlayerController.cs @@ -29,6 +29,11 @@ public class PlayerController : CharacterBase, IObserver private IPlayerState _currentStateClass { get; set; } private IPlayerAction _currentAction; public IPlayerAction CurrentAction => _currentAction; + + // 강화 관련 + private float attackPowerLevel; + private float moveSpeedLevel; + private float dashCoolLevel; // 상태 관련 private PlayerStateIdle _playerStateIdle; @@ -49,6 +54,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() { @@ -72,6 +84,15 @@ public class PlayerController : CharacterBase, IObserver hitEffectController = GetComponentInChildren(); PlayerInit(); + + //강화 수치 적용 + attackPowerLevel = 1 + (float)UpgradeManager.Instance.upgradeStat.CurrentUpgradeLevel(StatType.AttackPower) / 2; + moveSpeedLevel = 1 + (float)UpgradeManager.Instance.upgradeStat.CurrentUpgradeLevel(StatType.MoveSpeed) / 2; + dashCoolLevel = (float)UpgradeManager.Instance.upgradeStat.CurrentUpgradeLevel(StatType.DashCoolDown)/4; + + attackPower *= attackPowerLevel; + moveSpeed *= moveSpeedLevel; + dashCooldownDuration -= dashCoolLevel; } private void Update() @@ -81,6 +102,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; @@ -231,6 +256,13 @@ public class PlayerController : CharacterBase, IObserver { if (!_isBattle) return; + // 쿨타임 중이면 무시 + if (IsDashOnCooldown) + { + Debug.Log("대시 쿨타임 중"); + return; + } + // 만약 공격 중이면 강제로 공격 종료 if (_currentAction == _attackAction && _attackAction.IsActive) { @@ -244,6 +276,9 @@ public class PlayerController : CharacterBase, IObserver _currentAction = _actionDash; _actionDash.StartAction(this); + + // 쿨타임 시작 + dashCooldownTimer = dashCooldownDuration; } public void OnActionEnded(IPlayerAction action) diff --git a/Assets/KSH/PlayerStats.cs b/Assets/KSH/PlayerStats.cs index 760b6f9b..e41b2dfa 100644 --- a/Assets/KSH/PlayerStats.cs +++ b/Assets/KSH/PlayerStats.cs @@ -5,7 +5,7 @@ using UnityEngine; using UnityEngine.SceneManagement; using Random = UnityEngine.Random; -public class PlayerStats : MonoBehaviour +public class PlayerStats : MonoBehaviour, ISaveable { public class StatsChangeData // 변경된 스탯 데이터 { @@ -354,4 +354,31 @@ public class PlayerStats : MonoBehaviour } #endregion + + public void ApplySaveData(Save save) + { + if (save?.homeSave != null) + { + TimeStat = save.homeSave.time; + HealthStat = save.homeSave.health; + ReputationStat = save.homeSave.reputation; + //mealCount = save.homeSave.mealCount; + //houseworkCount = save.homeSave.houseworkCount; + } + } + + public Save ExtractSaveData() + { + return new Save + { + homeSave = new HomeSave + { + time = this.TimeStat, + health = this.HealthStat, + reputation = this.ReputationStat, + //mealCount = this.mealCount, + //houseworkCount = this.houseworkCount + } + }; + } }