유니티 Time.deltaTime에 대해서

 

중요 클래스 - Time - Unity 매뉴얼

Unity의 Time 클래스가 제공하는 중요한 기본 프로퍼티를 사용하여 프로젝트에서 시간과 관련된 값으로 작업할 수 있습니다.

docs.unity3d.com

 

좋은 컴퓨터는 1초에 2프레임 진행된다고 가정해보겠습니다. 

플레이어의 속도가 1m라고 가정했을 때 1초에 2프레임이 진행되는 컴퓨터에의 플레이어는 2m를 가게됩니다.

 

나쁜 컴퓨터는 1초에 1프레임 진행된다고 가정해보겠습니다. 

플레이어의 속도가 1m라고 가정했을 때 1초에 1프레임이 진행되는 컴퓨터에의 플레이어는 1m를 가게됩니다.

 

나쁜 컴퓨터는 억울하겠죠...? 게임이 공평해야지! 컴퓨터가 좋다고 1m더 멀리 가다니.. 그럴 순 없습니다.

이럴 때 사용하는 것이 Time.deltaTime입니다.


Time.deltaTime이란?

마지막 프레임이 완료된 후 경과한 시간을 초 단위로 반환된 값입니다. 1초를 실행된 프레임 개수를 나눠주면 됩니다.

예시 : 1초 동안 100개의 프레임이 실행되었으면 -> 1/100

 

구체적인 상황으로 예시를 들어보겠습니다.

 

좋은 컴퓨터는 1초에 2프레임을 실행시키고 나쁜 컴퓨터는 1초에 1프레임을 실행시킨다고 가정하겠습니다.

이때 좋은 컴퓨터의 Time.deltaTime은 0.5초가 될 것이고, 나쁜 컴퓨터의 Time.deltaTime은 1초가 될 것입니다.

 

매 프레임이 작동할 때 속도에 Time.deltaTime을 곱하게 되면 아래와 같습니다.

 

(좌) 1초 동안 2프레임 실행 / (우) 1초 동안 1프레임 실행 / 이동속도 1로 동일

 

좋은 컴퓨터의 1프레임 : 1x0.5 , 2프레임 : 1x0.5 => 2프레임 동안 간 거리를 더하면 1m가 됩니다.

나쁜 컴퓨터의 1프레임 : 1x1 => 1프레임동안 간 거리는 1m가 됩니다.

 

두 컴퓨터는 이제 같은 시간 동안에는 같은 거리를 갈 수 있게 보장 되었습니다.

 

그니깐 좋은 컴퓨터의 경우 한 프레임 더 동작하니깐 더 부드러운 동작으로 1m을 이동하고 나쁜 컴퓨터의경우 한 프레임이 없으므로 뚝뚝 끊기는 동작으로 1m을 이동한다고 생각하시면 됩니다.