다른 레벨로 이동하기

 

작성 기준 버전 :: 4.21.1

 

대규모 오픈 월드 게임이 아닌 경우 장소를 이동할 때나 대규모 오픈 월드 게임이더라도 특정한 장소로 이동하는 경우에도 레벨 혹은 씬을 전환하는 방식을 주로 사용한다. 이번 섹션에서는 다른 레벨로 이동하는 방법에 대해서 알아본다.

 

프로젝트 생성

 

LevelOpenTest라는 이름으로 C++ 삼인칭 프로젝트 하나를 새로 생성한다.

 

 

 

레벨 구성

 

프로젝트가 생성되면 레벨은 다음과 같이 꾸며져 있을 것이다.

 

 

그 레벨을 다음과 같이 수정한다. 새로 만든 구역에 들어가면 다른 레벨로 이동하도록 만들 예정이다.

 

 

이 다음에는 이동할 레벨을 추가한다.

 

 

그리고 새로 추가한 레벨을 다음과 같이 꾸민다.

 

 

이 맵을 SecondMap이라는 이름으로 저장한다.

 

 

 

 

 

 

LevelTransferVolume

 

이 다음에는 콜리전에 플레이어가 닿으면 다른 레벨로 전송시키는 볼륨을 만든다.

 

Actor 클래스를 상속받아서 LevelTransferVolume 클래스를 만든다.

 

 

LevelTransferVolume.h에서 다음 함수와 멤버 변수를 선언한다.

 

protected:
    virtual void NotifyActorBeginOverlap(AActor* OtherActor) override;

private:
    UPROPERTY(EditAnywhere, meta = (AllowPrivateAccess = "true"))
    FString TransferLevelName;

    UPROPERTY()
    class UBoxComponent* TransferVolume;

 

LevelTransferVolume.cpp로 넘어가서 박스 컴포넌트의 기능과 레벨 이동 함수를 사용하기 위해서 다음 전처리기를 추가한다.

 

#include "Engine/Classes/Components/BoxComponent.h"

#include "Kismet/GameplayStatics.h"

 

생성자 함수에 TransferVolume를 초기화 하는 코드를 추가한다.

 

TransferVolume = CreateDefaultSubobject<UBoxComponent>(TEXT("TransferVolume"));
RootComponent = TransferVolume;
TransferVolume->SetCollisionProfileName(TEXT("OverlapOnlyPawn"));

 

NotifyActorBeginOverlap() 함수를 구현한다.

 

void ALevelTransferVolume::NotifyActorBeginOverlap(AActor * OtherActor)
{
    APawn* Pawn = Cast<APawn>(OtherActor);
    if (Pawn != nullptr)
    {
        UGameplayStatics::OpenLevel(this, TransferLevelName);
    }
}

 

UGamePlayStatics 클래스의 OpenLevel() 함수가 이번 섹션의 주 목적이다. OpenLevel() 함수를 호출해서 이동하고자 하는 레벨의 이름을 넣어주면 원하는 레벨로 이동이 가능하다.

 

코드 작성이 완료되면 프로젝트를 빌드하고 언리얼 에디터로 돌아간다.

 

기본 맵의 새로 뚫어놓은 위치에 볼륨을 배치한 뒤 Transfer Level Name을 SecondMap으로 설정한다.

 

 

플레이해서 볼륨을 배치한 곳으로 캐릭터를 이동시키면 지정해준 다른 맵으로 이동하는 것을 확인할 수 있다.

 

 

[유니티 어필리에이트 프로그램]

아래의 링크를 통해 에셋을 구매하시거나 유니티를 구독하시면 수익의 일부가 베르에게 수수료로 지급되어 채널의 운영에 도움이 됩니다.

 

에셋스토어

여러분의 작업에 필요한 베스트 에셋을 찾아보세요. 유니티 에셋스토어가 2D, 3D 모델, SDK, 템플릿, 툴 등 여러분의 콘텐츠 제작에 날개를 달아줄 다양한 에셋을 제공합니다.

assetstore.unity.com

 

Easy 2D, 3D, VR, & AR software for cross-platform development of games and mobile apps. - Unity Store

Have a 2D, 3D, VR, or AR project that needs cross-platform functionality? We can help. Take a look at the easy-to-use Unity Plus real-time dev platform!

store.unity.com

 

Create 2D & 3D Experiences With Unity's Game Engine | Unity Pro - Unity Store

Unity Pro software is a real-time 3D platform for teams who want to design cross-platform, 2D, 3D, VR, AR & mobile experiences with a full suite of advanced tools.

store.unity.com

[투네이션]

 

-

 

toon.at

[Patreon]

 

WER's GAME DEVELOP CHANNEL님이 Game making class videos 창작 중 | Patreon

WER's GAME DEVELOP CHANNEL의 후원자가 되어보세요. 아티스트와 크리에이터를 위한 세계 최대의 멤버십 플랫폼에서 멤버십 전용 콘텐츠와 체험을 즐길 수 있습니다.

www.patreon.com

[디스코드 채널]

 

Join the 베르의 게임 개발 채널 Discord Server!

Check out the 베르의 게임 개발 채널 community on Discord - hang out with 399 other members and enjoy free voice and text chat.

discord.com

 

반응형

+ Recent posts