개념
- 게임 루프에서 매 프레임마다 호출되는 함수.
- 게임 내의 모든 객체나 컴포넌트가 프레임 단위로 지속적으로 업데이트되는 메커니즘 제공.
Tick 함수 선언
- Actor나 Component에 대한 Tick 함수는 Tick(float DeltaTime)형태로 구현.
// Ex)
virtual void Tick(float DeltaTime) override;
DeltaTime
- 지난 프레임과 현재 프레임 사이의 시간 차이를 나타내는 값.
주로 프레임 속도(FPS)에 의존하지 않는 방식의 물체나 애니메이션에 사용.
- 예시로 DeltaTime을 사용하면 프레임 속도에 따라 이동 거리가 달라지지 않도록 할 수 있음.
// 이동 예시
FVector NewLocation = GetActorLocation() + (FVector(0.f, 100.f, 0.f) * DeltaTime);
SetActorLocation(NewLocation);
- DeltaTime에 (FVector(0.f, 100.f, 0.f) -> 이동할 속도를 곱해 프레임마다 이동을 일정하게 만듦.
Tick 활성화, 비활성화
- Tick 기능은 기본적으로 비활성화 되어 있으며, 이를 활성화 하려면 PrimaryActorTick.bCanEverTick = true로 설정해야함. 기본적으로 false로 설정되어 있으며 true와 false로 활성화 비활성화를 설정 가능.
Tick 속도 조정
- 기본적으로 매 프레임 호출되지만, 성능 최적화를 위해 호출 주기를 조정할 수도 있음.
PrimaryActorTick.TickInterval을 설정하면 특정 시간 간격으로 Tick이 호출되게 할 수 있음.
// Tick을 0.1초 간격으로 호출하도록 설정
PrimaryActorTick.TickInterval = 0.1f;
Tick을 사용하는 주요 클래스
- AActor : Tick을 통해 위치, 회전, 상태 등을 업데이트하는 데 사용.
- APawn : Tick을 사용하여 이동, 회전, 입력 처리 가능.
- UActorComponent : TickComponent 함수가 호출되어 해당 컴포넌트의 상태를 업데이트.
- ACharacter : Tick을 사용하여 캐릭터의 이동, 애니매이션등을 업데이트할 수 있음.