상세 컨텐츠

본문 제목

유니티 스킬 쿨타임

유니티/기능

by MJ_119 2025. 1. 20. 19:00

본문

유니티 스킬 쿨타임

 

간단한 구조 : 

    float jumpAttackCooldown;
    float lastTimeJumped;
    public bool JumpAttack()
    {
        if(Time.time > lastTimeJumped + jumpAttackCooldown)
        {
            lastTimeJumped = Time.time;
            return true;
        }
        return false;
    }
    void Update()
    {
        if(CanJumpAttack())
        {
            // 점프 공격 실행
            ExecuteJumpAttack();
        }
    }

 

 

코루틴 이용한 방식

public class MonsterAttack : MonoBehaviour
{
    [SerializeField] private float cooldownTime = 3f;
    private bool canAttack = true;

    public bool TryJumpAttack()
    {
        if(canAttack)
        {
            StartCoroutine(CooldownRoutine());
            return true;
        }
        return false;
    }

    private IEnumerator CooldownRoutine()
    {
        canAttack = false;
        yield return new WaitForSeconds(cooldownTime);
        canAttack = true;
    }
}

 

 

 

두 방식의 비교

  1. Time.time 방식:
// 장점
- 메모리 사용이 적음 (변수 2개만 사용)
- 단순한 구조로 이해하기 쉬움
- 정확한 시간 추적 가능
- 게임이 일시정지되어도 시간이 계속 흐름

// 단점
- 쿨타임 도중에 중단/재설정이 어려움
- 진행 중인 쿨타임 확인이 추가 계산 필요
  1. 코루틴 방식:
// 장점
- 쿨타임 진행 상태 확인이 쉬움
- 쿨타임 중단/재설정이 용이
- 추가 기능 구현이 쉬움 (시각효과, 사운드 등)
- 복잡한 쿨타임 패턴 구현 가능

// 단점
- 메모리 사용이 더 많음 (코루틴 관리 필요)
- 구조가 상대적으로 복잡

 

 

 

관련글 더보기