728x90

모든 컴퓨터들의 성능이 다르기 때문에 FPS도 다름. 그렇기 때문에 Update 함수는 한 프레임마다 실행되기 때문에 같은 시간이더라도 pc에 따라 실행되는 횟수가 다르다.

이때 이런 문제를 해결하기 위해 Time.deltaTime을 이용

Time.deltaTime은 한 프레임의 시간을 반환

ex) 60프레임 => 1/60초, 144프레임 => 1/144초

 

예를 들어 1초동안 1m를 움직이는 스크립트를 작성하려고 한다. 이때, FPS가 60과 144인 경우를 살펴보자

 

i) 60의 경우

만약 Time.deltaTime을 쓰지 않고, Update 함수에서 한 프레임 당 1m를 이동하게 시킨다면, 1초 동안 60m를 이동할 것 => 1m * 60

 

해결방법

1m를 1초 동안 깜박이는 횟수인 60으로 나눠주면 1/60m

이때 1/60m를 60번 깜빡여서 실행해주면 1m이다.

그러므로 1m * 1/60 * 60을 해주면 컴퓨터의 FPS에 상관없이 같은 시간동안 1m를 이동하게 된다.

 

ii) 144의 경우

만약 Time.deltaTime을 쓰지 않고, Update 함수에서 한 프레임 당 1m를 이동하게 시킨다면, 1초 동안 144m를 이동할 것 => 1m * 144

 

해결방법

1m를 1초 동안 깜박이는 횟수인 144으로 나눠주면 1/144m

이때 1/144m를 144번 깜빡여서 실행해주면 1m이다.

그러므로 1m * 1/144 * 144을 해주면 컴퓨터의 FPS에 상관없이 같은 시간동안 1m를 이동하게 된다.

 

그러므로 1초 동안 이동할 거리 * 한 프레임 당 시간 * 깜빡이는 횟수를 해주면 컴퓨터의 FPS에 상관없이 1초 동안 이동할 거리를 이동하게 된다.

728x90

'Game Development > Unity' 카테고리의 다른 글

평행이동과 좌표계 관련  (0) 2020.12.13
벡터  (0) 2020.12.13
메시지와 브로드캐스팅  (0) 2020.12.10
(C#)상속  (0) 2020.12.10
(C#)클래스와 오브젝트  (0) 2020.12.10
snwdaaa