[언리얼엔진5 입문] 30. Velocity, DeltaTime

ASP·2024년 4월 3일
0

언리얼엔진5 입문

목록 보기
30/41

헤더파일에서 클래스의 새 멤버변수 생성.

UPROPERTY의 괄호 안에는 여러 개의 인자를 쓸 수 있는데, 이번에 Category 를 사용.

Category 키워드를 사용하면 해당 변수가 Details 탭에 위와 같이 섹션으로 생성됨.

그리고 cpp 파일을 위와 같이 작성하고 플레이를 누르면 플랫폼이 매우 빠르게 앞으로 이동하게 됨.

1초에 100cm, 즉 1m 이동하기를 원하는데 위와 같이 설정하면 너무 빠르게 이동함.

그 이유는 앞서 말했듯, Tick 함수는 매 프레임마다 실행됨.

현재 나의 PC의 프레임률이 매우 빨라서 그에 따라 Tick 함수의 호출이 짧은 시간안에 많이 일어나고 그에 따라 매우 빠르게 이동하는 것임.

따라서 DeltaTime을 사용해야 함.

DeltaTime을 사용하면 언리얼에서 각 프레임이 실행되는데 걸리는 시간을 알 수 있음. 즉, Tick 함수의 호출 주기를 알 수 있음.

그리고 DeltaTime 이라는 변수는 Tick 함수의 매개변수이므로, 함수 내에서 사용 가능

DeltaTime 변수를 사용하면 한 프레임당 실행되는 시간을 알 수 있는데, 이것이 중요한 이유는 어떤 값을 델타 타임으로 곱하면 게임 프레임률이 독립적으로 변하기 때문임.

즉, PC의 성능에 상관 없이 게임이 동일하게 동작하게 됨.

이처럼, 컴퓨터의 성능에 따라 프레임률이 달라지고, 이에 따라 DeltaTime도 달라짐.

따라서 PC의 프레임률에 상관없이 게임이 동일하게 동작하게 하려면 프레임률을 곱해주면 됨.

ex) 빠른 컴퓨터에서 플랫폼을 1초에 100cm 이동시키고 싶음.
해당 컴퓨터에선 DeltaTime = 0.01. 따라서 0.01 * 100 을 매 프레임마다 실행시키면 1cm씩 이동함. 그리고 1초에 Tick 함수를 100번 호출하므로 결과적으로 1초에 100cm 이동하게 됨. 느린 컴퓨터도 마찬가지.

Tick 함수를 위와 같이 수정 후 게임 플레이를 하면 1초에 1m 움직이는 플랫폼을 완성.

profile
언리얼엔진 개발자의 길

0개의 댓글