![[Unreal Engine C++] 진행도에 따른 텔레포트 설정](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdhJiea%2FbtsFh5BANRu%2FvHm4VcDOkVja2ItCLh0Rw1%2Fimg.png)
[Unreal Engine C++] 진행도에 따른 텔레포트 설정UnrealEngine/공부2024. 2. 27. 16:55
Table of Contents
이 프로젝트의 진행은 첫 맵에서 Level 1로 이동해서 깬 뒤, 다음 Level 2로 가는 식으로 구현되어 있다.
하지만 Level 1을 깬 뒤 Level 2 텔레포트를 생성하게 하는 것이 아닌, 실제로는 맵에 구현이 되어 있지만 레벨을 불러올 때마다 진행도(Progress)를 확인하고 이보다 낮으면 Destroy()를 하도록 해서 진행도와 맞지 않는 레벨로 이동하는 것을 막아보고자 한다.
이를 구현해보자.
//TOSaveGame.h
#pragma once
#include "Tellours.h"
#include "GameFramework/SaveGame.h"
#include "TOSaveGame.generated.h"
/**
*
*/
UCLASS()
class TELLOURS_API UTOSaveGame : public USaveGame
{
GENERATED_BODY()
public:
UTOSaveGame();
UPROPERTY()
int32 Progress;
...
};
//TOSaveGame.cpp
#include "TOSaveGame.h"
UTOSaveGame::UTOSaveGame()
{
Progress = 1;
...
}
현재 진행도를 SaveGame에 구현해 두었다.
//TOTeleport.cpp
#include "TOTeleport.h"
#include "TOCharacter.h"
#include "Kismet/GameplayStatics.h"
#include "Components/WidgetComponent.h"
#include "Engine/LevelStreaming.h"
#include "TOPlayerState.h"
...
// Called when the game starts or when spawned
void ATOTeleport::BeginPlay()
{
Super::BeginPlay();
ATOPlayerState* TOPlayerState = Cast<ATOPlayerState>(GetWorld()->GetFirstPlayerController()->GetCharacter()->GetPlayerState());
// 만약 프로그래스보다 낮으면 액터를 지움.
if (TOPlayerState->GetProgress() < NeedProgress)
{
TeleportMesh->DestroyComponent();
InteractionWidget->DestroyComponent();
SpotLightComponent->DestroyComponent();
}
}
...
PlayerState에서 Progress를 받아오고, 이 텔레포트에 지정되어 있는 NeedProgress보다 낮으면 모든 컴포넌트들을 Destroy하도록 설정하였다.
![](https://blog.kakaocdn.net/dn/dzoktU/btsFjVytMoM/Nk6QegKP0B6bstLao5yiXk/img.png)
Need Progress는 언리얼 에디터에서도 수정할 수 있도록 구현하였다.
결과는 다음과 같다.
![](https://blog.kakaocdn.net/dn/bQnaBW/btsFkXCQhXa/aZqKtUi7vkQVZHMElbbGZk/img.png)
진행도가 1일 때에는 NeedProgress = 3인 텔레포트가 보이지 않는다.
![](https://blog.kakaocdn.net/dn/dhJiea/btsFh5BANRu/vHm4VcDOkVja2ItCLh0Rw1/img.png)
하지만 진행도가 3일 때에는 텔레포트가 보이게 된다.
'UnrealEngine > 공부' 카테고리의 다른 글
[Unreal Engine C++] Timeline을 사용하여 암전 효과 만들기 (0) | 2024.03.02 |
---|---|
[Unreal Engine C++] Fireball의 구현 (1) | 2024.02.27 |
[Unreal Engine C++] 현재 레벨 저장 기능의 구현 (0) | 2024.02.27 |
[Unreal Engine C++] 특정 위치로의 레벨 텔레포트의 구현 (1) | 2024.02.27 |
[Unreal Engine C++] 연속 공격의 구현 (0) | 2024.02.27 |
@NiffJB :: 개발하는 니프
CSE & GAME 개발 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 부탁드립니다!