세상에는 롤, 아크, 에펙스를 최고 사양으로 돌려도 잘 돌아가는 컴퓨터가 있으며,
메이플도 안되는 개쓰뤠기(본인이 이에 포함된다면 죄송합니다) 컴이 있다.
여기 60fps와 10fps 컴이 있다고 가정하자. (각각 1초에 60,10 프레임 씩)
만약 이 두 컴퓨터로 카트라이더를 한다면 항상 60fps 쪽이 승리할 것 이다.

만약 1프레임에 1m를 간다고 가정하면,
각각 1초에 60m, 10m를 가는 것이다.
당연히 10fps 컴은 쭈구리가 되는 것이다.
이러한 불리한 상황을 방지하기 위해 쓰는 것이 deltaTime 이다.
| deltaTime 이란?
Time.deltaTime: 전 프레임이 완료되기까지 걸린 시간
이를 이동거리에 곱하면 된다.
이동거리 * Time.deltaTime 을 예시에 적용하면,
위의 경우 deltaTime이 60fps는 1/60초, 10fps는 1/10초 이므로
실질적 이동거리 = 60 * 1/60 == 1 == 10 * 1/10
즉, 실질적 이동거리가 같아지는 것이다.
| Time.deltaTime 적용
Translate의 경우, 벡터에 곱한다. ex) transform.Translate(Vec*Time.deltaTime);
Vector 함수의 경우, 시간 매개변수에 곱한다. ex) Vector3.Lerp(Vec1, Vec2, T*Time.deltaTime);
void Update(){
Vector3 vec = new Vector3(Input.GetAxisRaw("Horizontal") * Time.deltaTime,
Input.GetAxisRaw("Vertical") * Time.deltaTime,
0);
transform.Traslate(vec);
}
이 글은 골드메탈님의 '유니티 기초 강좌'의 내용을 정리 및 추가한 것입니다.
'유니티' 카테고리의 다른 글
터렛 업그레이드 시스템 구현 (1) | 2024.08.30 |
---|---|
[멋쟁이사자처럼 유니티 TIL] UI 슬라이더, 체력바 구현 (+ 델리게이트(delegate), 이벤트) (1) | 2024.06.11 |
[유니티 기초] 버튼 입력 방식으로 물체 이동하기 - GetButton, Transform (1) | 2024.01.23 |
[유니티 기초] Input 으로 키보드, 마우스 입력 기능 넣기 (1) | 2024.01.21 |
[유니티 기초] 오브젝트 라이프 사이클 (0) | 2024.01.21 |