본문 바로가기
UNITY/Basic

Time.deltaTime

by neohtux 2020. 7. 1.
728x90

Time.deltaTime

public static float deltaTime;

Description

지난 프레임이 완료되는 데 까지 걸린 시간을 나타내며, 단위는 초를 사용합니다. (읽기전용)

사용자의 프레임 률(frame rate)을 독립적으로 적용하기 위해서 사용합니다.

매 프레임마다 어떤 값을 더하거나 빼는 계산을 하는 경우에, Time.deltaTime과 곱해서 사용할 수 있습니다. Time.deltaTime과 곱하는 경우에, 다음의 경우를 나타냅니다: 오브젝트를 프레임당 10미터가 아닌 초당 10미터 움직이고 싶은경우를 나타냅니다.

MonoBehaviour의 FixedUpdate에서 호출되는 경우에, 고정 프레임률 delta Time을 반환합니다. OnGUI에서는 프레임당 여러번 호출될 수 있고 deltaTime은 업데이트 될 다음 프레임 전까지,

Note that you should not rely on Time.deltaTime from inside OnGUI since OnGUI can be called multiple times per frame and deltaTime would hold the same value each call, until next frame where it would be updated again.

using UnityEngine; using System.Collections;

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    void Update() {
        float translation = Time.deltaTime * 10;
        transform.Translate(0, 0, translation);
    }
}

 

 

Unity 공식 doc 에 나온 설명이다.

 

여기서 가장 빠르게 이해하는 방법은

" 오브젝트를 프레임당 10미터가 아닌 초당 10미터 움직이고 싶은경우를 나타냅니다."

 

만약 프레임당 10미터가 차이나면 PC성능이 좋아 초당 프레임을 120나오는 유저는

게임내에 케릭터를 이동을 하거나 배틀그라운드에서 총을 쓸때, RPG에서 이동할때

 

성능이  좋지 않은 유저 예를들면 프레임 40이나오는 유저보다 모든 부분에서 뛰어날 것이다.

이렇게 되면 밸런스가 깨지므로 이걸 보정 하자는 것.

프레임기준이 아닌 초(시간)당 10M라고 생각을해보자

 

좋은 컴퓨터 사양 PC 프레임이 초당 120 프레임 (FPS)

좋지 않은 사양 PC 프레임이   초당 40 프레임을 찍을떄 

 

초당 10미터를 120으로 나누면 1fps 즉 한프레임당  0.083미터를 움직이는것처럼 보일것이고

40프레임 PC는 1fps당 0.25m를 움직이는것처럼 보인다.

 

하지만 결과적으로 1초에 120프레임이든 40프레임이든 결과값은 10m에 수렴하게 된다.

 

 

즉 한번에 사진을 120장을 빠르게 이동시켜 부드럽게 보여줄것이냐

 40장을 띄엄 띄엄 이동시켜 렉걸린것처럼 부자연스럽게 보여줄것이냐

 

결과값은 똑같은것이고 이러한 결과값을 프레임이아닌 시간축에 보정해주는 기능이다.

300x250

'UNITY > Basic' 카테고리의 다른 글

Vector3의 magnitude와 normalized  (0) 2020.06.30
Jump  (0) 2016.12.28
Throw  (0) 2016.12.28
identity(회전 일치)  (0) 2016.12.27
Rotate  (0) 2016.12.27

댓글