유니티 스킬 쿨타임
간단한 구조 :
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;
}
}
// 장점
- 메모리 사용이 적음 (변수 2개만 사용)
- 단순한 구조로 이해하기 쉬움
- 정확한 시간 추적 가능
- 게임이 일시정지되어도 시간이 계속 흐름
// 단점
- 쿨타임 도중에 중단/재설정이 어려움
- 진행 중인 쿨타임 확인이 추가 계산 필요
// 장점
- 쿨타임 진행 상태 확인이 쉬움
- 쿨타임 중단/재설정이 용이
- 추가 기능 구현이 쉬움 (시각효과, 사운드 등)
- 복잡한 쿨타임 패턴 구현 가능
// 단점
- 메모리 사용이 더 많음 (코루틴 관리 필요)
- 구조가 상대적으로 복잡
유니티 내위치에서 타겟으로 Y축 회전하기 (0) | 2025.01.25 |
---|---|
유니티 유한상태기계 - FSM(Finite State Machine) 1 (0) | 2025.01.25 |
유니티 몬스터가 캐릭터한테 점프해서 도달하기 (0) | 2025.01.20 |
유니티 Vector3.Distance() 거리구하기, 방향벡터 구하기 (0) | 2025.01.20 |
유니티 스크립터블 오브젝트 (0) | 2025.01.15 |