24.01.23 TIL - Unity : Time.DeltaTime, 프레임 간의 시간 간격

JJwoo·2024년 1월 23일

델타타임(deltaTime)

deltaTime은 프레임 간 시간 간격을 나타낸다.
= 프레임 간 두 값의 차이

Unity에서는 Time.deltaTime을 통해 액세스할 수 있다.

그런데 사용자의 컴퓨터 성능에 따라 달라지기에 ( 프레임이 높을수록 빨라진다.)

Update 함수의 실행 횟수를 조절하여 다른 성능의 컴퓨터에서도 Time.deltaTime을 통해 동일한 게임 환경을 구성해주어야 한다.
(자동으로 시간 간격을 계산 해준다.)

Update 함수는 매 프레임마다 호출됨.
컴퓨터의 성능이 좋을수록 프레임률이 높아지고, 그만큼의 프레임 마다 Update 함수가 더 자주 호출된다.
= deltaTime이 없으면 더 많이 update 해버려서 성능이 낮은 사용자와의 차이가 발생 ( ex. 이동속도)

  • 델타타임 적용: Update 함수에서 이동 로직에 Time.deltaTime을 곱한다.
using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
    public float moveSpeed = 5f; // 스피드 설정

    void Update()
    {
        float moveHorizontal = Input.GetAxis("Horizontal");
        float moveVertical = Input.GetAxis("Vertical");

        // 이동 벡터를 생성.
        Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);

        // Translate를 사용하여 오브젝트를 이동시키고, DeltaTime을 곱해 일관된 속도를 유지.
        transform.Translate(movement * moveSpeed * Time.deltaTime);
        
        
    }
}

게임에서 Time.deltaTime 의의

  • 플레이어의 일관된 경험:
    모든 게임 플레이어에게 하드웨어 성능에 관계없이 동일한 게임 플레이 경험을 제공하기 위해 게임의 속도와 반응성이 일관되게 유지되어야 할 때.
  1. 물리적 정확성 :
    물리 관련 계산에서 물리 엔진이 더 정확하고 실제와 비슷한 작동을 해야 할 때.

  2. 애니메이션 및 이동의 부드러움:
    캐릭터의 이동, 카메라의 팔로우, 애니메이션 등이 프레임 속도의 변화에 영향을 받지 않고 부드럽게 진행됨을 표현 해야 할 때 등등

profile
개발 모코코

0개의 댓글