[Unity] 같은 동작을 일정 시간동안 여러 번 하지 못하게 하기

·2023년 9월 17일
0

Unity

목록 보기
5/5
post-thumbnail

같은 동작을 일정 시간동안 여러 번 하지 못하게 하기

Update 이용

Space bar를 누르는 간격이 적어도 0.5초 이상이 되도록 강제하는 방법을 어떻게 구현해야 할까 하다가 처음에는 다음과 같이 구현해 보았다.

private float timer = 0.5;

private void Update() {
	timer += Time.deltaTime;
    if (timer > 0.5 && Input.GetKeyDown(KeyCode.Space)) {
    	...
        timer = 0;
    }
}

시작하자마자에는 space bar를 누를 수 있어야 하므로 timer 초기 값을 0.5로 설정했다.

Coroutine 이용

private float pushRate = 0.5f;
private bool isPushAvailable;

private void Start() {
	isPushAvailable = true;
    StartCoroutine(intervalKeyDown());	
}

private void Update() {
	if (isPushAvailable && Input.GetKeyDown(KeyCode.Space)) {
    	...
        isPushAvailable = false;
}

IEnumerator intervalKeyDown() {
    	yield return new WaitForSeconds(pushRate);
        isPushAvailable = true;
}

Coroutine을 이용하여 pushRate마다 isPushAvailable을 true로 바꿔주고, isPushAvailable이 true일 때만 Input을 받는다. space bar가 눌렸을 때 isPushAvailable을 false로 바꿔준다.

0개의 댓글