모든 컴퓨터들의 성능이 다르기 때문에 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초 동안 이동할 거리를 이동하게 된다.
'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 |