2026-02-12 15:23:25 +00:00
using UnityEngine ; // 유니티 엔진의 기본 기능을 불러올거에요 -> UnityEngine을
2026-01-29 06:58:38 +00:00
2026-02-12 15:23:25 +00:00
public class Stats : MonoBehaviour // 클래스를 선언할거에요 -> MonoBehaviour를 상속받는 Stats를
2026-01-29 06:58:38 +00:00
{
2026-02-12 15:23:25 +00:00
[Header("--- 기본 능력치 ---")] // 인스펙터 창에 제목을 표시할거에요 -> --- 기본 능력치 --- 를
[SerializeField] private float baseMaxHealth = 100f ; // 변수를 선언할거에요 -> 기본 최대 체력인 baseMaxHealth를
[SerializeField] private float baseMoveSpeed = 5f ; // 변수를 선언할거에요 -> 기본 이동 속도인 baseMoveSpeed를
[SerializeField] private float baseAttackDamage = 10f ; // 변수를 선언할거에요 -> 기본 공격력인 baseAttackDamage를
2026-01-29 06:58:38 +00:00
2026-02-12 15:23:25 +00:00
[Header("--- 보너스 능력치 ---")] // 인스펙터 창에 제목을 표시할거에요 -> --- 보너스 능력치 --- 를
public float bonusMaxHealth ; // 변수를 선언할거에요 -> 추가 체력인 bonusMaxHealth를
public float bonusMoveSpeed ; // 변수를 선언할거에요 -> 추가 이동 속도인 bonusMoveSpeed를
public float bonusAttackDamage ; // 변수를 선언할거에요 -> 추가 공격력인 bonusAttackDamage를
2026-01-29 06:58:38 +00:00
2026-02-12 15:23:25 +00:00
[Header("--- 장착 장비 ---")] // 인스펙터 창에 제목을 표시할거에요 -> --- 장착 장비 --- 를
public float weaponDamage ; // 변수를 선언할거에요 -> 무기 데미지인 weaponDamage를
2026-02-01 15:49:12 +00:00
2026-02-12 15:23:25 +00:00
[Header("--- 밸런스 설정 ---")] // 인스펙터 창에 제목을 표시할거에요 -> --- 밸런스 설정 --- 을
[SerializeField] private float runSpeedMultiplier = 1.5f ; // 변수를 선언할거에요 -> 달리기 속도 배율인 runSpeedMultiplier를
2026-02-01 15:49:12 +00:00
2026-02-21 06:14:24 +00:00
[Header("--- 최소값 제한 ---")] // 인스펙터 창에 제목을 표시할거에요 -> --- 최소값 제한 --- 을
[Tooltip("이동 속도가 이 값 아래로 내려가지 않습니다")]
[SerializeField] private float minMoveSpeed = 0.5f ; // 변수를 선언할거에요 -> 최소 이동 속도인 minMoveSpeed를
[Tooltip("최대 체력이 이 값 아래로 내려가지 않습니다")]
[SerializeField] private float minMaxHealth = 1f ; // 변수를 선언할거에요 -> 최소 체력인 minMaxHealth를
[Tooltip("공격력이 이 값 아래로 내려가지 않습니다")]
[SerializeField] private float minAttackDamage = 0f ; // 변수를 선언할거에요 -> 최소 공격력인 minAttackDamage를
2026-01-29 06:58:38 +00:00
/ * = = = = = = = = = = = = = = = = = = = = = = = = =
2026-01-29 16:11:10 +00:00
* 실 제 게 임 로 직 용 프 로 퍼 티
2026-01-29 06:58:38 +00:00
* = = = = = = = = = = = = = = = = = = = = = = = = = * /
2026-02-21 06:14:24 +00:00
public float MaxHealth = > Mathf . Max ( baseMaxHealth + bonusMaxHealth , minMaxHealth ) ; // 프로퍼티를 선언할거에요 -> 총 최대 체력을 최소값 이상으로 반환하는 MaxHealth를
public float BaseAttackDamage = > Mathf . Max ( baseAttackDamage + bonusAttackDamage , minAttackDamage ) ; // 프로퍼티를 선언할거에요 -> 총 기본 공격력을 최소값 이상으로 반환하는 BaseAttackDamage를
public float TotalAttackDamage = > Mathf . Max ( BaseAttackDamage + weaponDamage , minAttackDamage ) ; // 프로퍼티를 선언할거에요 -> 최종 공격력(무기 포함)을 최소값 이상으로 반환하는 TotalAttackDamage를
2026-01-29 16:11:10 +00:00
2026-02-21 06:14:24 +00:00
// ✨ [수정] Mathf.Max로 최소 속도 보장
public float CurrentMoveSpeed = > Mathf . Max ( baseMoveSpeed + bonusMoveSpeed , minMoveSpeed ) ; // 프로퍼티를 선언할거에요 -> 현재 이동 속도를 최소값 이상으로 반환하는 CurrentMoveSpeed를
2026-02-12 15:23:25 +00:00
public float CurrentRunSpeed = > CurrentMoveSpeed * runSpeedMultiplier ; // 프로퍼티를 선언할거에요 -> 현재 달리기 속도를 반환하는 CurrentRunSpeed를
2026-01-29 06:58:38 +00:00
2026-02-12 15:23:25 +00:00
private void Update ( ) // 함수를 실행할거에요 -> 매 프레임마다 Update를
2026-01-29 06:58:38 +00:00
{
2026-02-12 15:23:25 +00:00
finalMaxHealth = MaxHealth ; // 값을 갱신할거에요 -> 디버그용 최종 체력을
finalMoveSpeed = CurrentMoveSpeed ; // 값을 갱신할거에요 -> 디버그용 최종 속도를
finalAttackDamage = TotalAttackDamage ; // 값을 갱신할거에요 -> 디버그용 최종 공격력을
2026-01-29 16:11:10 +00:00
}
2026-01-29 06:58:38 +00:00
2026-02-08 14:20:23 +00:00
// ✨ [수정] 레벨업 시 체력과 공격력을 올려주도록 변경
2026-02-12 15:23:25 +00:00
public void AddBaseLevelUpStats ( float hpAdd , float dmgAdd ) // 함수를 선언할거에요 -> 레벨업 보너스를 적용하는 AddBaseLevelUpStats를
2026-02-08 14:20:23 +00:00
{
2026-02-12 15:23:25 +00:00
baseMaxHealth + = hpAdd ; // 값을 더할거에요 -> 기본 체력에 증가분을
baseAttackDamage + = dmgAdd ; // 값을 더할거에요 -> 기본 공격력에 증가분을
2026-02-08 14:20:23 +00:00
}
2026-02-12 15:23:25 +00:00
public void AddMaxHealth ( float value ) = > bonusMaxHealth + = value ; // 함수를 선언할거에요 -> 추가 체력을 늘리는 AddMaxHealth를
public void AddMoveSpeed ( float value ) = > bonusMoveSpeed + = value ; // 함수를 선언할거에요 -> 추가 속도를 늘리는 AddMoveSpeed를
public void AddAttackDamage ( float value ) = > bonusAttackDamage + = value ; // 함수를 선언할거에요 -> 추가 공격력을 늘리는 AddAttackDamage를
2026-01-29 06:58:38 +00:00
2026-02-08 14:20:23 +00:00
// ✨ [제거] 무게 및 힘 관련 함수들(UpdateWeaponWeight, ResetWeight)이 삭제되었습니다.
2026-01-29 16:11:10 +00:00
2026-02-12 15:23:25 +00:00
[Header("--- 최종 능력치 (Read Only) ---")] // 인스펙터 창에 제목을 표시할거에요 -> --- 최종 능력치 (Read Only) --- 를
[SerializeField] private float finalMaxHealth ; // 변수를 선언할거에요 -> 디버그용 최종 체력 변수를
[SerializeField] private float finalMoveSpeed ; // 변수를 선언할거에요 -> 디버그용 최종 속도 변수를
[SerializeField] private float finalAttackDamage ; // 변수를 선언할거에요 -> 디버그용 최종 공격력 변수를
2026-01-29 16:11:10 +00:00
}