[UNITY] Time.deltaTime

spixychz·2025년 8월 12일

Unity

목록 보기
10/14

오늘의 질문

Unity에서 Time.deltaTime이 무엇이며, 왜 사용하는지 설명하세요.

오늘의 대답

Time.deltaTime은 이전 프레임과 현재 프레임 사이에 걸린 시간을 의미합니다.
모두 다른 환경에서 각 프레임에 맞게 업데이트를 해줌으로써 일관된 환경이 되도록 보정하는 역할로 사용됩니다.
예를 들어, 물체 이동을 프레임마다 고정 값으로 처리하면 PC 성능이나 FPS에 따라 속도가 달라집니다. 이 문제를 해결하려면 이동량에 Time.deltaTime을 곱해 프레임 독립적 움직임을 구현해야 합니다.


Time.deltaTime

이전 프레임과 현재 프레임 간의 경과 시간(초)

  • 단위: 초(float 값)
  • 프레임 간 경과 시간을 반환
  • 성능이 낮을수록 값이 커진다

왜 ?

FPS 차이에 따른 움직임 속도 불균형 방지

  • FPS가 낮은 PC: 프레임마다 이동이 느리게 진행 → 전체적으로 더 느린 움직임
  • FPS가 높은 PC: 프레임마다 이동이 빠르게 진행 → 전체적으로 더 빠른 움직임

=>Time.deltaTime을 곱하면 "1초당 일정 속도"를 유지 가능

사용 예시

void Update()
{
    transform.Translate(Vector3.forward * 5f * Time.deltaTime);
}
  • FPS 30 <=> Time.deltaTime = 1 / 30
  • FPS 60 <=> Time.deltaTime = 1 / 60

=> FPS와 무관하게 일정 속도 유지

주의할 점

  • Update()에서만 사용 권장
    FixedUpdate()에서는 Time.fixedDeltaTime을 사용해야 일관성 있음.
  • Time.timeScale 영향을 받음
    • Time.timeScale = 0.5fdeltaTime 값이 절반이 됨 → 동작이 느려짐
    • Time.timeScale = 0deltaTime이 0 → 모든 움직임 멈춤

결론

  • 정의: 이전 프레임과 현재 프레임 간의 경과 시간(초)
  • 목적: FPS 차이에 관계없이 일정한 속도 유지
  • 사용: Update() → Time.deltaTime, FixedUpdate() → Time.fixedDeltaTime
profile
UNITY로 게임 개발하는 사람

0개의 댓글