유니티 부트캠프 8기/Ch05. Unity 게임 개발 숙련

스테미나

Imperor 2025. 3. 5. 02:06

장비를 사용할 때 스테미나가 줄어들게 만들자

 

PlayerCondition에 스테미나 사용 함수를 만든다

public class PlayerCondition : MonoBehaviour, IDamagable
{
...
    // 장비 휘두르면 스테미나 줄어든다
    // 장비 사용하는 쪽에서 UseStamina를 호출
    public bool UseStamina(float amount)
    {
        if (stamina.curValue - amount < 0)  // 줄어든 스태미나가 0보다 작으면, 그 행동을 할 수 없다
        {
            return false;
        }
        stamina.Subtract(amount);
        return true;
    }
}

 

이를 장비 사용하는 쪽에서 호출한다

EquipTool의 OnAttackInput에서 호출

 

// 공격, 자원채취
public class EquipTool : Equip
{
...
    public float useStamina;    // 1회 행동할때 스테미나 소모량
...
    public override void OnAttackInput()
    {
        // isAttacking이 false일때만 내부로직 실행
        if (!attacking)
        {
            // 스테미나가 남았을 때만 사용가능
            if (CharacterManager.Instance.Player.condition.UseStamina(useStamina))
            {
                attacking = true;
                animator.SetTrigger("Attack");  // 애니메이션 재생
                Invoke("OnCanAttack", attackRate);      /// 시간차(공격주기마다 한번 호출)
            }
        }
    }
...