[TIL] Unity deltaTime

Dreamer·2024년 10월 7일

1. 오늘 주제

오늘부터 유니티 입문 과정이 시작 되었다. 강의를 보고 있는중에 Time.deltaTime에 대해 이야기가 나왔길래 아주 중요한 내용이므로 오늘 TIL 주제로 작성해보려고 한다.

유니티에서는 구조적으로 매 프레임 마다 반드시 실행하는 함수들이 있다.
그중에 Update 함수에서 Time.deltaTime을 많이 사용하게 되는데 Time.deltaTime은 프레임 간의 시간 차이를 나타내는 변수로 사용하게 된다.
왜 사용하는가에 대해서는 게임의 프레임 속도에 상관없이 일정한 시간 간격으로 동작하는 게임을 만들 때 유용하게 사용하게 된다.
주로 오브젝트의 움직임, 애니메이션, 물리 시뮬레이션 등에서 시간에 따른 변화를 조정하는데 사용한다고 한다.
그럼 이제 어떤식으로 사용하는지도 알아보자.

2. Time.deltaTime

우선 C# 스크립트 파일에서 MonoBehavior를 상속받은 모든 오브젝트 스크립트에서 사용 가능한데, 아래 코드 처럼 사용할 수 있다.

void Update()
{
    float speed = 10f;
    transform.Translate(Vector3.forward * speed * Time.deltaTime);
}

매 프레임마다 10 값을 가진 속도로 움직이는 대신, Time.deltaTime을 곱해줘서 프레임에 상관없이 일정 속도로 움직이게 한다.
대충 계산기를 두들겨보면

  • Vector3.forward = (0, 0, 1)
  • speed = 10
  • Time.deltaTime = 예를 들어 이전 프레임과 시간 차이 0.2 초

라고 했을 때 (0, 0, 1) * 10 * 0.2 = 1프레임 동안 z축 방향으로 2 만큼 앞으로 움직인다는 이야기이다.
이렇게 된다면 어떤 PC에서는 초당 프레임이 60이고 어떤 PC에서는 프레임 10 차이가 발생하더라도 동일한 움직임을 보장할 수 있게 된다.

마지막으로 아주 유용한 이미지인 것 같아서 이미지를 보며 다시 생각해보자!

참고로 fixedUpdate() 에서 사용 할 수 있는 Time.fixedDeltaTime 도 있다.

그럼 오늘 TIL은 끝!

profile
새로운 시작

0개의 댓글