
deltaTime은 프레임 간 시간 간격을 나타낸다.
= 프레임 간 두 값의 차이
Unity에서는 Time.deltaTime을 통해 액세스할 수 있다.
그런데 사용자의 컴퓨터 성능에 따라 달라지기에 ( 프레임이 높을수록 빨라진다.)
Update 함수의 실행 횟수를 조절하여 다른 성능의 컴퓨터에서도 Time.deltaTime을 통해 동일한 게임 환경을 구성해주어야 한다.
(자동으로 시간 간격을 계산 해준다.)
Update 함수는 매 프레임마다 호출됨.
컴퓨터의 성능이 좋을수록 프레임률이 높아지고, 그만큼의 프레임 마다 Update 함수가 더 자주 호출된다.
= deltaTime이 없으면 더 많이 update 해버려서 성능이 낮은 사용자와의 차이가 발생 ( ex. 이동속도)
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 의의
물리적 정확성 :
물리 관련 계산에서 물리 엔진이 더 정확하고 실제와 비슷한 작동을 해야 할 때.
애니메이션 및 이동의 부드러움:
캐릭터의 이동, 카메라의 팔로우, 애니메이션 등이 프레임 속도의 변화에 영향을 받지 않고 부드럽게 진행됨을 표현 해야 할 때 등등