Time.deltaTime - float Time.deltaTime{get;} 실수형 자료를 리턴해주는 프로퍼티이다.
필요성
컴퓨터의 성능에 따라 업데이트 속도가 달라질 수 있는데 이 때 Update에서 변경해주는 값들이 컴퓨터의 성능에따라 같은 현실 시간임에도 다르게 변경될 수 있다. 따라서 이를 맞추어줄 장치가 deltaTime이다.
원리
컴퓨터에서 현실의 시간을 알아올 수 있다고 생각해보자 예를 들어 컴퓨터가 100이라는 숫자를 세면 1초가 지난다 가정해보자. A,B 컴퓨터가 있고 A는 1초에 1번 B는 2번 실행한다고 가정하자.
시간
|
A
|
B
|
A가 인식한 실제 지나간 시간
|
B가 인식한 실제 지나간 시간
|
0.5
|
50
|
50/100 = 0.5
|
||
1
|
100
|
100
|
100/100 =1
|
100/100 =1
|
1.5
|
100
|
150
|
100/100=1
|
150/100 =1.5
|
2
|
200
|
200
|
200/100 =2
|
200/100 =2
|
A의 경우 1초에 1번 실행되므로 1초 경과시에 한번만 시간을 확인한다. B의 경우 1초에 2번 실행되므로 0.5에 한번 시간을 확인한다. 결국 빠른 B 컴퓨터가 더 찰나의 시간을 인식할 수 있지만 각 컴퓨터의 지나간 시간은 일치하게 된다.
기능
2인용 게임에 참여하는 각 컴퓨터의 성능이 다를 때 각 델타타임을 사용하지 않고 임의로 업데이트를 할 시 컴퓨터의 성능에 따라 업데이트 되는 정도가 달라서 빠른 컴퓨터가 유리해지는 상황이 발생하거나 같은 공간에서 물리적인 처리가 불가능해 질 수 있다. 이 때 델타 타임을 사용한다. 위 표에서 누적한 시간을 빼서 다시 계산한 후 50의 스피드로 움직이는 상황을 가정하자.
시간
|
A의 업데이트
|
B의 업데이트
|
A의 이동거리
|
B의 이동거리
|
0.5
|
(50-0)/100 = 0.5
|
0
|
25
|
|
1
|
(100-0)/100 =1
|
(100-50)/100 = 0.5
|
50
|
50
|
1.5
|
(100-100)/100=0
|
(150-100)/100 =0.5
|
50
|
75
|
2
|
(200-100)/100 =1
|
(200-150)/100 =0.5
|
100
|
100
|
B의 캐릭터가 더 깔끔하게 이동하는 것처럼 보이겠지만 결과적으로 두 컴퓨터에서 같은시간에 같은 거리를 이동하는 것을 맞출 수 있게 된다.
또한 이를 통해서 게임에서 캐릭터가 1초에 1의 위치를 움직이게 만드는 단위로도 활용가능하다.
'게임 > Unity' 카테고리의 다른 글
Unity 시점함수 (0) | 2023.03.29 |
---|