https://docs.unrealengine.com/5.0/ko/cinematics-and-movie-making-in-unreal-engine/
시네마틱과 시퀀서
시퀀서는 언리얼 엔진의 멀티 트랙 에디터로, 시네마틱 시퀀스를 실시간으로 제작하고 미리보는 데 사용됩니다.
docs.unrealengine.com
연출용 몬스터 배치
캐릭터를 상속 받은 BPC_LSActor 생성해서 아무 메시나 입혀준다.
https://m.blog.naver.com/chvj7567/222763211445
언리얼(Unreal) - 레벨 시퀀스(Level Sequence)
레벨 시퀀스를 통해 애니메이션을 작동시키는 방법을 알아보겠다. 트리거에 닿으면 문이열리고 트리거를 벗...
blog.naver.com
트리거 박스에 들어오면 레벨 스퀀스 재생되게 만들기
Unreal_3th.Build.cs 에 모듈 추가
public class Unreal_3th : ModuleRules
{
public Unreal_3th(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
PublicDependencyModuleNames.AddRange(new string[] {
"MovieScene"
, "LevelSequence"
});
}
C++ TriggerBox 상속받아서 LevelSequenceTrigger 생성
#include "../Header/global.h"
#include "LevelSequence/Public/LevelSequence.h"
#include "LevelSequence/Public/LevelSequencePlayer.h"
#include "LevelSequence/Public/LevelSequenceActor.h"
#include "CoreMinimal.h"
#include "Engine/TriggerBox.h"
#include "LevelSequenceTrigger.generated.h"
UCLASS()
class UNREAL_3TH_API ALevelSequenceTrigger : public ATriggerBox
{
GENERATED_BODY()
private:
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (AllowPrivateAccess = "true"))
int32 m_PlayCount;
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (AllowPrivateAccess = "true"))
ULevelSequence* m_LvSeq;
ULevelSequencePlayer* m_SequencePlayer;
ALevelSequenceActor* m_SequenceActor;
public:
virtual void BeginPlay() override;
public:
// OverlapDelegate
UFUNCTION()
void BeginTrigger(AActor* _TriggerActor, AActor* _OtherActor);
UFUNCTION()
void EndTrigger(AActor* _TriggerActor, AActor* _OtherActor);
public:
UFUNCTION()
void EndLevelSequence();
public:
ALevelSequenceTrigger();
~ALevelSequenceTrigger();
};
#include "LevelSequenceTrigger.h"
ALevelSequenceTrigger::ALevelSequenceTrigger()
: m_PlayCount(1)
{
}
ALevelSequenceTrigger::~ALevelSequenceTrigger()
{
}
void ALevelSequenceTrigger::BeginPlay()
{
Super::BeginPlay();
OnActorBeginOverlap.AddDynamic(this, &ALevelSequenceTrigger::BeginTrigger);
OnActorEndOverlap.AddDynamic(this, &ALevelSequenceTrigger::EndTrigger);
}
void ALevelSequenceTrigger::BeginTrigger(AActor* _TriggerActor, AActor* _OtherActor)
{
LOG(LogTemp, Warning, TEXT("LevelSequence Trigger BeginOverlap"));
if (IsValid(m_LvSeq))
{
if (!IsValid(m_SequencePlayer))
{
m_SequencePlayer
= ULevelSequencePlayer::CreateLevelSequencePlayer(GetWorld()
, m_LvSeq, FMovieSceneSequencePlaybackSettings{}, m_SequenceActor);
// 레벨시퀀스 종료시 호출할 Delegate 등록
m_SequencePlayer->OnFinished.AddDynamic(this, &ALevelSequenceTrigger::EndLevelSequence);
}
m_SequencePlayer->Play();
}
}
void ALevelSequenceTrigger::EndTrigger(AActor* _TriggerActor, AActor* _OtherActor)
{
LOG(LogTemp, Warning, TEXT("LevelSequence Trigger EndOverlap"));
}
void ALevelSequenceTrigger::EndLevelSequence()
{
--m_PlayCount;
LOG(LogTemp, Warning, TEXT("Trigger EndLevelSequence"));
if (m_PlayCount <= 0)
{
Destroy();
}
}
레벨에 트리거 박스 배치
EndLevelSequence 가 호출되어 플레이 카운트가 줄어들어 Destroy 되기 때문에, 같은 곳을 다시 가도 Trigger 가 작동하지 않는다.
HUD Hide 만들기
UCLASS()
class UNREAL_3TH_API ALevelSequenceTrigger : public ATriggerBox
{
GENERATED_BODY()
private:
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (AllowPrivateAccess = "true"))
bool HideHUD;
}
========================================================================================
void ALevelSequenceTrigger::BeginTrigger(AActor* _TriggerActor, AActor* _OtherActor)
{
LOG(LogTemp, Warning, TEXT("LevelSequence Trigger BeginOverlap"));
if (IsValid(m_LvSeq))
{
// HUD 끄기
if (HideHUD)
{
AUnreal_3thGameModeBase* GameMode = Cast<AUnreal_3thGameModeBase>(UGameplayStatics::GetGameMode(GetWorld()));
if (IsValid(GameMode))
{
GameMode->GetMainHUD()->SetVisibility(ESlateVisibility::Hidden);
}
}
}
}
void ALevelSequenceTrigger::EndLevelSequence()
{
// HUD 켜기
if (HideHUD)
{
AUnreal_3thGameModeBase* GameMode = Cast<AUnreal_3thGameModeBase>(UGameplayStatics::GetGameMode(GetWorld()));
if (IsValid(GameMode))
{
GameMode->GetMainHUD()->SetVisibility(ESlateVisibility::Visible);
}
}
}
이벤트 활용
언바운드 -> 새 엔드포인트
'언리얼 5' 카테고리의 다른 글
231108 언리얼 엔진 5 의 새로운 기술 (2) | 2023.11.08 |
---|---|
231025 언리얼을 활용한 2D Game 제작 (카메라 락 트리거) (0) | 2023.10.25 |
231024 언리얼을 활용한 2D Game 제작 (움직임, 정적 카메라, 타일맵) (0) | 2023.10.25 |
231023 언리얼을 활용한 2D Game 제작 (0) | 2023.10.23 |
231018 물리 엔진 (사운드 재생) / 레벨 스트리밍 (0) | 2023.10.18 |