유니티

[유니티 이론] 중요한 기능!! Deltatime 정의 및 사용법

맛난과자 2024. 1. 23. 18:43

 

세상에는 롤, 아크, 에펙스를 최고 사양으로 돌려도 잘 돌아가는 컴퓨터가 있으며,

 

메이플도 안되는 개쓰뤠기(본인이 이에 포함된다면 죄송합니다) 컴이 있다.

 

 

여기 60fps와 10fps 컴이 있다고 가정하자. (각각 1초에 60,10 프레임 씩)

 

만약 이 두 컴퓨터로 카트라이더를 한다면 항상 60fps 쪽이 승리할 것 이다.

1초당 두 카트의 이동거리

 

만약 1프레임에 1m를 간다고 가정하면,

 

각각 1초에 60m, 10m를 가는 것이다.

 

당연히 10fps 컴은 쭈구리가 되는 것이다.

 

이러한 불리한 상황을 방지하기 위해 쓰는 것이 deltaTime 이다.

 

 

 

| deltaTime 이란?

Time.deltaTime: 전 프레임이 완료되기까지 걸린 시간

 

이를 이동거리에 곱하면 된다.

 

 

이동거리 * Time.deltaTime 을 예시에 적용하면,

 

위의 경우 deltaTime이 60fps는 1/60초, 10fps는 1/10초 이므로

 

실질적 이동거리 = 60 * 1/60 == 1 == 10 * 1/10

 

즉, 실질적 이동거리가 같아지는 것이다.

 

 

 

| Time.deltaTime 적용

 

Translate의 경우, 벡터에 곱한다. ex) transform.Translate(Vec*Time.deltaTime);

 

Vector 함수의 경우, 시간 매개변수에 곱한다.  ex) Vector3.Lerp(Vec1, Vec2, T*Time.deltaTime);

 

void Update(){
    Vector3 vec = new Vector3(Input.GetAxisRaw("Horizontal") * Time.deltaTime,
                              Input.GetAxisRaw("Vertical") * Time.deltaTime,
                              0);
    transform.Traslate(vec);
}

 

 

 

 

 

 

 

 

이 글은 골드메탈님의 '유니티 기초 강좌'의 내용을 정리 및 추가한 것입니다.