Time.deltaTime란 무엇이며 어떻게 작동하나요?

발행: (2025년 12월 10일 오후 11:42 GMT+9)
4 min read
원문: Dev.to

Source: Dev.to

Cover image for What is Time.deltaTime and how does it work?

Time.deltaTime란?

Time.deltaTime을 이해하려면 먼저 Update() 메서드가 무엇인지 알아야 합니다.
Update()는 Unity의 메인 플레이어‑루프 메서드이며 매 프레임마다 호출됩니다. Update() 안에 넣은 코드는 매 프레임 실행되며, 보통 캐릭터 이동 로직이 여기에 들어갑니다.

버튼을 눌렀을 때 1 유닛 이동하도록 코드를 작성하면, 프레임 레이트가 다른 기기에서는 캐릭터가 다른 거리를 이동합니다. 기기가 빠를수록 Update()가 초당 더 많이 실행되고, 캐릭터는 더 멀리 이동합니다.

실제 문제: FPS

근본 원인은 Frames Per Second (FPS) 입니다.

  • FPS가 높을수록Update()가 더 자주 호출 → 초당 이동 횟수가 늘어남 → 이동 속도가 빨라짐.
  • FPS가 낮을수록Update()가 덜 호출 → 초당 이동 횟수가 줄어듦 → 이동 속도가 느려짐.

Time.deltaTime은 **마지막 프레임 이후 경과한 시간(초)**을 제공함으로써 이 문제를 해결합니다. 이동량에 Time.deltaTime을 곱하면 프레임당 이동을 초당 이동으로 변환해, 하드웨어에 관계없이 일관된 동작을 보장합니다.

어떻게 작동하나요?

예시 1: Time.deltaTime 없이

머신FPS프레임당 이동량초당 이동량
느린 PC601 유닛60 × 1 = 60 유닛
빠른 PC1201 유닛120 × 1 = 120 유닛

결과: 빠른 기기일수록 캐릭터가 더 빨리 움직여 원하지 않는 동작이 발생합니다.

예시 2: Time.deltaTime과 함께

머신FPSTime.deltaTime (초)프레임당 이동량 (1 × deltaTime)1 초 후 이동량
느린 PC60≈ 0.016660.01666 유닛0.01666 × 60 = 1 유닛
빠른 PC120≈ 0.008330.00833 유닛0.00833 × 120 = 1 유닛

결과: FPS와 관계없이 캐릭터 이동이 일관됩니다.

사용 방법

Update() 안에서 프레임당 값(예: 속도)에 Time.deltaTime을 곱하기만 하면 됩니다:

// 초당 1 유닛씩 앞으로 이동
transform.Translate(Vector3.forward * 1f * Time.deltaTime);

// 또는 커스텀 속도 변수를 사용할 때
transform.position += movementSpeed * Time.deltaTime * transform.forward;

핵심 요약

프레임 레이트에 독립적인 동작을 Update()에서 수행해야 할 경우, 항상 Time.deltaTime을 사용하세요. 기기의 성능에 따라 동작이 달라지길 원하지 않는 한, 시간 기반 이동은 Time.deltaTime 없이 사용하지 않는 것이 좋습니다.

Back to Blog

관련 글

더 보기 »

Unity 미니풋볼

1. Maydon poli Plane - Hierarchy → Right‑click → 3D Object → Plane - Inspector settings: - Name: Ground - Position: X = 0, Y = 0, Z = 0 - Scale: X = 2, Y = 1, …