Transform
액터의 위치, 회전, 크기를 제어하는 컴포넌트이다.
- 위치, 스케일: FVector(x, y, z)로 표현됨.
- 회전(중요!): FRotator(Pitch, Yaw, Roll)로 표현됨.
- Pitch -> y축으로 회전
- Yaw -> z축으로 회전
- Roll -> x축으로 회전
Tick
게임 프레임 업데이트와 Tick
언리얼 엔진은 게임 실행 중 매 프레임마다 여러 작업을 수행한다.
특정 액터가 "매 프레임마다" 수행할 로직이 있다면, 언리얼 엔진은 그 액터의 Tick 함수를 매 프레임 호출해준다.
- 렌더링: 화면 그리기
- 물리 연산: 충돌/중력/마찰 등 물리 엔진 처리
- 오브젝트 업데이트: 게임 내 액터들의 상태 갱신
Tick 함수 활성화하기
액터를 생성할 때 기본적으로 Tick 함수를 사용하려면, 아래와 같이 생성자에서 설정해야 한다.
PrimaryActorTick.bCanEverTick = true;
bCanEverTick이 false이면 엔진은 성능 최적화를 위해 해당 액터의 Tick을 호출하지 않는다.
불필요한 Tick 호출은 성능에 부담을 줄 수 있으므로, 사용하지 않는다면 false를 명시하여 최적화 효과와 코드 명확성을 높여야 한다.
DeltaTime이란?
Tick(float DeltaTime)에서 DeltaTime은 "직전 프레임부터 현재 프레임까지 걸린 시간(초)"이다.
예)
- 60 FPS 환경: DeltaTime -> 1/60초 -> 약 0.0167초
- 120 FPS 환경: DeltaTime -> 1/120초 -> 약 0.0083초
프레임 레이트가 높을수록 DeltaTime이 작아지고, 낮을수록 DeltaTime이 커진다.
DeltaTime을 이용한 프레임 독립적인 움직임
단순히 매 프레임마다 X 좌표를 증가시키면 FPS가 높을수록 더 빨리 움직여 게임 체감 속도가 달라진다.
이를 방지하려면 DeltaTime을 곱해서 초 단위 기준으로 이동/회전을 계산해야 한다.
예) 초당 100만큼 이동하고 싶다면, 100 * DeltaTime을 매 프레임마다 더해 줌
- 60 FPS -> 한 프레임 당 1.67씩 이동, 60 프레임 곱하면 100
- 120 FPS -> 한 프레임 당 0.83씩 이동, 120 프레임 곱하면 100
이처럼 어느 FPS 환경에서도 동일한 실제 속도를 유지할 수 있다.
'Unreal' 카테고리의 다른 글
언리얼 엔진 리플렉션 (0) | 2025.01.23 |
---|---|
[6강 숙제] 위치/회전/스케일을 동적으로 변경하는 오브젝트 만들기 (0) | 2025.01.23 |
Class Default Object(CDO)에 대한 간단한 이해 (0) | 2025.01.22 |
언리얼 엔진 Actor의 라이프 사이클 (0) | 2025.01.22 |
언리얼에서 컴포넌트란? (0) | 2025.01.22 |