Godot 에서 입력의 처리는 다음 세가지 함수에서 가능하다.
- _input()
- _process()
- _physics_process()
세 경우의 차이를 알아보자.
- _input()
입력이 들어오면 바로 실행하여 처리된다. 화면에 보여지는 프레임과 상관없이, 실시간 처리가 필요하다면 여기서 처리하면 된다. - _process()
알다시피, fps에 따라 한 프레임을 그리기전에 호출된다. 그러니까 화면에 그려지는 프레임 간격시간동안 들어왔던 입력상태를 여기서 확인할 수 있다. 굳이 모든 입력처리를 하지않고, 화면 갱신시에만 처리하므로 효율적으로 처리가 가능하다. - _physics_process()
물리엔진을 사용하는 경우, 일정 간격 시간단위로 물리적 연산을 반복하게 되는데, 이 물리적 연산을 처리하는 곳이다. fps와 같을 수도, 다를 수도 있다. 이 간격이 좁다면 보다 정확한 물리연산이 가능하지만, 연산량이 늘어나므로 부하가 커진다.
_process()와 비슷하지만, 물리적 상호작용을 다루는 부분이라면, 여기서 입력을 처리하면 효율적이다. Godot 4.x의 CharacterBody3D를 보면, 입력을 여기서 체크하고 있다.