주기적으로 나타났다가 사라지는 플랫폼은 장애물 코스 같은 플랫폼 게임 모드의 필수 요소입니다. 플레이어는 시간에 맞춰 다음 플랫폼으로 점프하여 이동해야 하며, 놓치면 바닥으로 떨어져서 처음부터 다시 시작해야 합니다.
이 튜토리얼에서는 포트나이트 언리얼 에디터(UEFN) 에서 Verse 를 사용하여 루프로 나타났다가 사라지는 플랫폼을 제작하는 방법을 알아봅니다. 완성된 스크립트는 이 튜토리얼 끝에 레퍼런스용으로 포함되어 있습니다.

사용된 Verse 언어 기능
-
loop: 게임이 끝날 때까지 표시와 숨기기 상태를 오가는 플랫폼입니다. 이 예시에서는 이 행동을 계속 실행하기 위해 Verseloop표현식을 사용합니다.
사용된 Verse API
-
Sleep():Sleep()함수로 플랫폼이 사라졌다가 나타나는 상태를 얼마나 오래 유지할지 선택할 수 있습니다. -
편집 가능 프로퍼티: 두 가지 장치 프로퍼티가 에디터에서 커스터마이징 가능하도록 UEFN에 노출됩니다. 플랫폼에 대한
creative_prop레퍼런스와Sleep()함수 호출에 대한ToggleDelay입니다.
레벨 설정하기
이 튜토리얼에서는 Verse 스타터 템플릿을 시작점으로 활용합니다. 시작하려면 먼저 Verse 장치(Verse Device) 기능 예시에서 새 프로젝트를 생성합니다.
이 예시에서는 다음과 같은 사물과 장치를 사용합니다.
-
1 x 플레이어 생성 패드 장치 : 이 장치는 플레이어가 게임 시작 시에 생성될 위치를 정의합니다.
-
3 x 포크리 사물(Creative Prop): 포크리 사물에는 플랫폼의 비저빌리티와 콜리전을 토글하기 위한
Hide(),Show()등 Verse로 호출할 수 있는 몇 가지 행동이 있습니다. 이 튜토리얼에서는 플레이어가 상호작용할 수 있는 플랫폼으로 Airborne Hoverplatform A 를 사용하지만, 경험의 필요에 맞게 자유롭게 변경해도 됩니다.
레벨을 구성하려면 다음 단계를 따릅니다.
-
씬으로 Airborne Hoverplatform A 하나를 드래그합니다. 바닥 위에 배치하여 플레이어가 사라지는 플랫폼에서 제때 점프하지 않으면 떨어지게 합니다. 아웃라이너(Outliner) 에서 플랫폼을 LoopingDisappearingPlatform 으로 명명합니다.
-
플랫폼을 2번 복사하고 첫 번째 플랫폼의 반대쪽에 배치하여 플레이어가 시간에 맞춰 점프하도록 합니다. 플레이어가 반대편에 간신히 도착할 만한 시간이 되도록 만들어야 합니다.
-
플레이어 생성 패드(Player Spawn Pad) 를 플랫폼 중 하나 위로 이동합니다. 게임이 시작되면 플레이어가 여기에 생성됩니다. 레벨 구성은 다음과 유사할 것입니다.
Verse 장치 제작하기
이 예시에서는 플랫폼의 비저빌리티를 토글하는 행동을 정의하기 위해 Verse로 제작된 장치를 사용합니다. Verse 장치를 제작하여 레벨에 배치하려면 다음 단계를 따릅니다.
-
Verse 익스플로러를 사용하여 looping_disappearing_platform 으로 명명한 새 Verse 장치를 생성합니다. 단계별 과정은 Verse를 사용하여 나만의 장치 만들기를 참고하세요.
-
콘텐츠 브라우저 의 looping_disappearing_platform 장치를 레벨로 드래그합니다. 단계별 과정은 Verse를 사용하여 나만의 장치 만들기를 참고하세요.
UEFN에서 장치 프로퍼티 편집하기
이 섹션은 2개의 장치 프로퍼티를 UEFN에 노출하여 에디터에서 커스터마이징하는 방법을 보여줍니다.
다음 단계를 따라 이전 섹션에서 제작한 looping_disappearing_platform 장치의 이러한 프로퍼티를 에디터에 노출합니다.
-
Verse 익스플로러를 열고 looping_disappearing_platform.verse 를 더블클릭하여 Visual Studio Code에서 스크립트를 엽니다.
-
looping_disappearing_platform클래스 정의에 다음 필드를 추가합니다.-
ToggleDelay로 명명된 편집 가능한float. 표시와 숨기기 사이를 토글하는 시간을 나타냅니다. 이 값을2.0, 즉 2초로 초기화합니다.# 플랫폼의 비저빌리티를 토글하기 전에 대기하는 시간입니다. @editable ToggleDelay:float = 2.0 -
DisappearingPlatform으로 명명된 편집 가능한creative_prop. 주기적으로 사라졌다가 나타나는 레벨 내 플랫폼입니다. 코드에 아직 레벨 내 이 오브젝트에 대한 레퍼런스가 없으므로, 빈 아키타입creative_prop{}으로 인스턴스화합니다. 나중에 떠다니는 플랫폼에 이 레퍼런스를 할당합니다.# 레벨 내 플랫폼에 대한 레퍼런스입니다. @editable DisappearingPlatform:creative_prop = creative_prop{}
-
-
이제
looping_disappearing_platform클래스 필드는 다음과 같습니다.using { /Fortnite.com/Devices } using { /Verse.org/Simulation } using { /UnrealEngine.com/Temporary/Diagnostics } # Verse 장치를 만드는 방법은 https://dev.epicgames.com/documentation/ko-kr/uefn/create-your-own-device-in-verse를 참고하세요. # Verse로 작성하여 레벨에 배치할 수 있는 포크리 장치 looping_disappearing_platform := class(creative_device): # 플랫폼의 비저빌리티를 토글하기 전에 대기하는 시간입니다. @editable ToggleDelay:float = 2.0 # 레벨 내 플랫폼에 대한 레퍼런스입니다. @editable DisappearingPlatform:creative_prop = creative_prop{}@editable어트리뷰트를 사용하여 스크립트에서ToggleDelay와 같은 값을 에디터에 노출하면 유용합니다. 이렇게 하면 매번 Verse 코드를 빌드할 필요 없이 UEFN에서 해당 값을 커스터마이징할 수 있으므로, 빠르게 반복작업하여 게임플레이 경험에 맞는 값을 찾을 수 있습니다. -
Visual Studio Code에서 스크립트를 저장하고 코드를 컴파일하여 레벨의 looping_disappearing_platform 장치를 업데이트합니다.
-
UEFN의 아웃라이너 패널에서 looping_disappearing_platform 장치를 선택하여 디테일 패널을 엽니다.
-
디테일 패널의 LoopingDisappearingPlatform 에서 다음 작업을 수행합니다.
-
뷰포트에서 오브젝트 선택 툴 을 클릭하고 포크리 사물을 선택하거나 검색창에서 LoopingDisappearingPlatform 을 검색하여, DisappearingPlatform 을 레벨에 추가한 포크리 사물인 LoopingDisappearingPlatform 으로 설정합니다.

-
ToggleDelay 를 원하는 플랫폼 표시/숨기기 시간(초)으로 설정합니다. 이 값은 앞서 정의한 값이므로 기본값 2.0 으로 설정됩니다.
-
플랫폼 숨기기 및 표시하기
레벨과 장치를 구성했으니 이제 플랫폼을 표시하고 숨기는 로직을 추가할 수 있습니다. looping_disappearing_platform 장치에 이 행동을 추가하려면 다음 단계를 따릅니다.
-
creative_prop클래스에는 비저빌리티를 토글하는 두 가지 메서드인Hide()와Show()가 있습니다. 다시 Visual Studio Code 로 돌아가OnBegin()의DisappearingPlatform에서Hide()를 호출한 다음Show()를 호출합니다.# 실행 중인 게임에서 장치가 시작되면 실행됩니다. OnBegin<override>()<suspends>:void= # 플랫폼을 안 보이게 만듭니다. DisappearingPlatform.Hide() # 플랫폼을 보이게 만듭니다. DisappearingPlatform.Show()이 코드를 실행하는 경우
Hide()와Show()가 순식간에 이어서 호출되므로 플랫폼이 사라졌다가 다시 나타나는 모습은 볼 수 없습니다. -
플랫폼을 표시/숨기기 상태로 더 오래 유지하려면
Sleep()을 사용하여 각Hide()및Show()호출 전에 딜레이를 추가해야 합니다.Sleep()함수는 루틴의 실행을 정지합니다.float실행인자를 이 함수에 전달하여 실행을 정지할 시간(단위: 초)을 지정할 수 있습니다.Hide()및Show()를 호출하기 전에 매번Sleep()을 호출하여 앞서 정의한ToggleDelay를 전달합니다.# 실행 중인 게임에서 장치가 시작되면 실행됩니다. OnBegin<override>()<suspends>:void= # ToggleDelay초 동안 대기합니다. Sleep(ToggleDelay) # 플랫폼을 안 보이게 만듭니다. DisappearingPlatform.Hide() # ToggleDelay초 동안 대기합니다. Sleep(ToggleDelay) # 플랫폼을 보이게 만듭니다. DisappearingPlatform.Show()이 코드를 실행하면 플랫폼이
ToggleDelay에서 정의된 시간인 2초 동안 숨겨졌다가 나머지 게임 시간 동안 표시됩니다.Sleep()함수는 비동기화 컨텍스트에서만 호출 가능합니다.OnBegin()메서드에는suspends지정자가 있어 이미 비동기화 컨텍스트이므로 추가 작업을 할 필요가 없습니다.suspends지정자에 대한 자세한 내용은 지정자와 어트리뷰트를 참고하세요. -
게임이 실행되는 동안 플랫폼이 표시 및 숨기기 상태를 오가게 하려면
loop표현식을 사용하면 됩니다.loop를 사용하면loop표현식 내부의 코드가break로 중단되지 않는 한 반복적으로 실행됩니다. 이 예시에서는 게임이 실행되는 동안 계속해서 플랫폼의 비저빌리티를 토글할 것이므로break표현식을 추가하여loop를 중단할 필요가 없습니다.OnBegin()시작 부분에loop표현식을 추가하고 코드의 나머지 부분은 루프 내부로 들여쓰기합니다. 완성된OnBegin()메서드는 다음과 같습니다.# 실행 중인 게임에서 장치가 시작되면 실행됩니다. OnBegin<override>()<suspends>:void= loop: # ToggleDelay초 동안 대기합니다. Sleep(ToggleDelay) # 플랫폼을 안 보이게 만듭니다. DisappearingPlatform.Hide() # ToggleDelay초 동안 대기합니다. Sleep(ToggleDelay) # 플랫폼을 보이게 만듭니다. DisappearingPlatform.Show() -
스크립트를 저장하고 Verse 를 클릭한 다음 Verse 코드 빌드 를 클릭해 코드를 컴파일합니다.
-
UEFN 툴바에서 세션 시작(Launch Session) 을 클릭하여 레벨을 플레이테스트합니다.
레벨을 플레이테스트하면 게임이 실행되는 동안 플랫폼이 2초마다 나타났다가 사라질 것입니다.

전체 스크립트
다음 코드는 플랫폼을 루프로 나타났다가 사라지게 만드는 스크립트의 완성본입니다.
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
# Verse 장치를 만드는 방법은 https://dev.epicgames.com/documentation/ko-kr/uefn/create-your-own-device-in-verse를 참고하세요.
# Verse로 작성하여 레벨에 배치할 수 있는 포크리 장치
looping_disappearing_platform := class(creative_device):
# 플랫폼의 비저빌리티를 토글하기 전에 대기하는 시간입니다.
@editable
ToggleDelay:float = 2.0
# 레벨 내 플랫폼에 대한 레퍼런스입니다.
@editable
DisappearingPlatform:creative_prop = creative_prop{}
# 실행 중인 게임에서 장치가 시작되면 실행됩니다.
OnBegin<override>()<suspends>:void=
loop:
# ToggleDelay초 동안 대기합니다.
Sleep(ToggleDelay)
# 플랫폼을 안 보이게 만듭니다.
DisappearingPlatform.Hide()
# ToggleDelay초 동안 대기합니다.
Sleep(ToggleDelay)
# 플랫폼을 보이게 만듭니다.
DisappearingPlatform.Show()
직접 해보기
이 튜토리얼에서는 Verse를 사용하여 게임이 실행되는 동안 플랫폼의 비저빌리티를 토글하는 장치를 만드는 방법을 배웠습니다.
알아본 내용을 바탕으로 다음과 같은 작업을 시도해 보세요.
-
looping_disappearing_platform 장치 및 사물의 구성을 복제하고 여러
ToggleDelay타이밍을 시도하여 더 길게 이어지는 플랫폼을 제작해 보세요. -
주기적으로 함수를 호출하는 개념을 사물 이동 장치 등의 다른 오브젝트에도 적용해 보세요.