본문 바로가기

Unreal/Udemy 강의

Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 3-15

속도와 델타타임(DeltaTime)

기존에는 속도를 직접 1을 더해주었지만, 속도 전용 변수를 만들어서 적용해준다.

이 과정에서 델타타임이라는 것을 이용해 이동 프레임률을 독립적으로 만드는 방법 또한 알아본다.

 

기존에는 직접 X 값에 대해서 1을 더하여 하나의 벡터에만 값을 더해주었다.

하지만 벡터에 다른 벡터를 추가할 수 있음을 이제 알기 때문에, 이를 이용하여 새롭게 벡터를 추가해준다.

초기화 값은 (100, 0, 0)으로 설정하였고, 추가로 Category라는 것을 생성하였다.

EditAnywhere 옆에 있는 것을 볼 수 있는데, 말그대로 다음과 같은 ("Moving Platform") 카테고리를 생성한다는 것이다.

 

언리얼에 가서 Moving Plaftform을 보면, 디테일 패널에 위와 같이 Moving Platform이라는 카테고리가 생기게 된다.

 

다음으로 기존에 직접 X에 더해주던 코드를 지우고, 새롭게 만든 벡터 값 PlatformVeclocity를 더해준다.

 

이제 컴파일하고 실행하면 엄청난 속도로 플랫폼이 이동하는 것을 볼 수 있다.

이는 프레임률 때문이며, 현재 프레임당 100 만큼 이동하도록 되어있는데 프레임이 높은 컴퓨터일 수록 빠른 속도로 이동하게 된다.

 

하지만 이렇게 되면 빠른 컴퓨터이면 더욱 빠르게, 느린 컴퓨터이면 더욱 느리게 움직이게 된다.

이렇게 속도가 변하는 것을 고정시키기 위해 사용하는 것이 바로 델타타임이다.

 

우선 델타타임은 각 프레임이 실행되는 데 시간이 얼마나 걸리는 지를 알려준다.

다음과 같은 예시를 보자.

느린 컴퓨터
- 초당 10프레임
- 델타타임 = 1/10 = 0.1초

빠른 컴퓨터
- 초당 100프레임
- 델타타임 = 1/100 = 0.01초

 

위 예시를 통해 초당 프레임에 델타타임을 곱해주면 프레임이 몇이던 간에 무조건 1로 고정되는 것을 알 수 있다.

그럼 이제 기존의 속도에 델타타임을 곱해주면, 프레임과 상관없이 고정된 속도를 얻을 수 있다.