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로 설정했다.
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로 바꿔준다.