오늘부터 유니티 입문 과정이 시작 되었다. 강의를 보고 있는중에 Time.deltaTime에 대해 이야기가 나왔길래 아주 중요한 내용이므로 오늘 TIL 주제로 작성해보려고 한다.
유니티에서는 구조적으로 매 프레임 마다 반드시 실행하는 함수들이 있다.
그중에 Update 함수에서 Time.deltaTime을 많이 사용하게 되는데 Time.deltaTime은 프레임 간의 시간 차이를 나타내는 변수로 사용하게 된다.
왜 사용하는가에 대해서는 게임의 프레임 속도에 상관없이 일정한 시간 간격으로 동작하는 게임을 만들 때 유용하게 사용하게 된다.
주로 오브젝트의 움직임, 애니메이션, 물리 시뮬레이션 등에서 시간에 따른 변화를 조정하는데 사용한다고 한다.
그럼 이제 어떤식으로 사용하는지도 알아보자.
우선 C# 스크립트 파일에서 MonoBehavior를 상속받은 모든 오브젝트 스크립트에서 사용 가능한데, 아래 코드 처럼 사용할 수 있다.
void Update()
{
float speed = 10f;
transform.Translate(Vector3.forward * speed * Time.deltaTime);
}
매 프레임마다 10 값을 가진 속도로 움직이는 대신, Time.deltaTime을 곱해줘서 프레임에 상관없이 일정 속도로 움직이게 한다.
대충 계산기를 두들겨보면
라고 했을 때 (0, 0, 1) * 10 * 0.2 = 1프레임 동안 z축 방향으로 2 만큼 앞으로 움직인다는 이야기이다.
이렇게 된다면 어떤 PC에서는 초당 프레임이 60이고 어떤 PC에서는 프레임 10 차이가 발생하더라도 동일한 움직임을 보장할 수 있게 된다.
마지막으로 아주 유용한 이미지인 것 같아서 이미지를 보며 다시 생각해보자!

참고로 fixedUpdate() 에서 사용 할 수 있는 Time.fixedDeltaTime 도 있다.
그럼 오늘 TIL은 끝!