UE4에서는 다음 코드를 통해 게임을 일시 정지할 수 있다.


UGameplayStatics::SetGamePaused(GetWorld(), true);


때로는 게임을 일시정지 해놓고 멋진 카메라 앵글로 바꾸고 싶을 때가 있는데 SetGamePaused 함수는 모든 Tick을 정지시키기 때문에 카메라의 Transform을 변경해도 바로 반영되지 않는다. (Pause를 풀었을 때 반영 됨)


해결책으로 게임이 정지되었을 때 APlayerController::UpdateCameraManager() 함수를 호출해주면 카메라가 바로바로 업데이트 된다. 단 매번 UpdateCameraManager 함수를 호출하기는 쉽지 않을 것이기 때문에 간단한 Actor를 만들어서 자동으로 불리게 해보았다.


AMyActor::AMyActor()

{

    PrimaryActorTick.bCanEverTick = true;


    // 기본적으로는 Tick 함수가 꺼져있음

    PrimaryActorTick.bStartWithTickEnabled = false

    

    // 일시정지 상태에서도 Tick 함수가 호출 됨

    PrimaryActorTick.bTickEvenWhenPaused = true
}


void AMyActor::Tick(float Delta)

{

    MyPlayerController->UpdateCameraManager(Delta);

}


이제 게임을 Pause 할 때 AMyActor::SetActorTickEnabled(true)를 호출해주고, Resume 할 때 AMyActor::SetActorTickEnabled(false)를 호출해주자. 


AMyActor를 동적으로 생성했다가 해제해도 될 것 같다. 만약 그렇게 하려면 bStartWithTickEnabled를 true로 하면 될듯?


이제 우리 게임에서도 Bullet Time을 보여줄 수 있다!



신고
받은 트랙백이 없고 , 댓글이 없습니다.
secret