Posts 유니티 - Time.deltaTime과 Time.fixedDeltaTime
Post
Cancel

유니티 - Time.deltaTime과 Time.fixedDeltaTime

deltaTime과 fixedDeltaTime


델타타임의 용도

타겟 디바이스마다 성능 격차로 인해 프레임 수행 시간이 다를 것을 대비해 보정하기 위해 사용된다.

예를 들어 A 디바이스는 1초에 10프레임, B 디바이스는 1초에 20프레임이 재생된다면

그냥 Update() 내에서 프레임마다 거리를 1씩 가도록 구현했을 경우, 1초에 A는 10, B는 20만큼 이동하게 된다.

하지만 원래 의도가 동일한 시간에 동일한 거리만큼 이동하도록 구현하는 것이었다면, 델타타임을 곱해주면 된다.

프레임마다 1 * deltaTime만큼 이동하도록 구현하면 A의 델타타임은 0.1, B의 델타타임은 0.05이므로

A, B 모두 동일하게 1초에 1씩 이동하게 할 수 있다.


deltaTime

Time.deltaTime을 통해 참조할 수 있다.

이전 프레임의 발생 시각과 현재 프레임의 발생 시각 사이의 시간 간격,

즉 이전 프레임의 수행에 걸린 시간을 의미한다.

Update() 내에서 시간의 진행에 따른 일정한 기능을 구현하기 위해 Time.deltaTime을 이용해 보정한다.


fixedDeltaTime

Time.fixedDeltaTime을 통해 참조할 수 있다.

기본적으로 물리 업데이트 발생 주기, 즉 Fixed Time Step 값을 의미한다.

마찬가지로 FixedUpdate() 내에서 Time.fixedDeltaTime을 이용해 보정한다.


참고사항

FixedUpdate() 내에서 Time.deltaTime을 참조해도 실제로는 Time.fixedDeltaTime의 값이 참조된다.

하지만 반대로 Update() 내에서 Time.fixedDeltaTime을 참조하면 그대로 Time.fixedDeltaTime의 값이 참조되니 주의해야 한다.

그러니 타겟 디바이스의 성능에 따른 보정을 위해 델타 타임을 사용할 때,

Update()FixedUpdate() 내에서 Time.deltaTime을 똑같이 참조해도 각각 의도에 맞게 사용된다.


Frame Rate


‘프레임률’이라고도 부르며, 초당 프레임 진행 횟수를 의미한다.

즉, 델타 타임과는 역수 관계이다. (`1 / deltaTime == frameRate)

흔히 FPS(Frame Per Second)라고도 한다.

Application.targetFrameRate를 통해 최대 프레임률을 제한할 수 있으며,

예를 들어 60으로 설정할 경우 Frame Rate60을 넘지 못하게 된다.

캐주얼 게임은 30, 액션 게임은 60으로 설정하는 경우가 많다.


참고 : FixedUpdate()와 물리 루프에 대한 이해



This post is licensed under CC BY 4.0 by the author.

(Amplify) Screen Effect - Chromatic Aberration

유니티 - FixedUpdate()에서 이동, 회전 구현 시 버벅임 현상 해결하기