이제 타깃 사이를 왕복 이동하는 엔티티를 생성했으니, 나만의 레벨을 빠르게 구성하기 위해 사용할 수 있는 프리팹을 만들 차례입니다.
프리팹 생성하기
시작하려면 이동하는 엔티티를 구성하는 엔티티 세트를 정의해야 합니다. 각 세트에는 여러 엔티티가 있습니다. 첫 번째 엔티티는 플랫폼 자체를 나타내는 한편, 다른 엔티티는 플랫폼이 이동할 목적지를 나타냅니다. 리셋되는 플랫폼 프리팹을 생성하려면 다음 단계를 따릅니다.
씬에
AnimatingBlockSet로 명명한 엔티티를 추가합니다. 씬에 엔티티와 컴포넌트를 추가하는 방법은 엔티티 및 컴포넌트 작업하기를 참고하세요.씬에
AnimatingBlockSet의 자손으로 다른 엔티티 하나를 추가하고AnimatingBlock으로 명명합니다. 이 엔티티의 트랜스폼을 부모의 트랜스폼으로 설정합니다. 이 엔티티가 애니메이션을 적용할 엔티티입니다.AnimatingBlock에
mesh_component를 추가하고 큐브에 할당합니다.AnimatingBlock에animate_to_targets_component및keyframed_movement_component를 추가합니다. 이는 앞서 정의한 Verse 컴포넌트입니다.씬에 엔티티 세 개를 추가하여
StartingTarget,Target2,Target3으로 명명하고,AnimatingBlockSet의 자손으로 설정합니다. 각 엔티티에mesh_component를 추가하고 스피어로 설정합니다. 이렇게 하면 월드에서 엔티티가 움직이고 있는 위치를 시각화할 수 있습니다.이러한 엔티티를 재배치하여 플랫폼을 다른 영역으로 이동할 수 있으며, 블록을 배치한 후에는 스피어가 게임플레이 중에 표시되지 않도록
mesh_component를 비활성화할 수 있습니다.StartingTarget을AnimatingBlock과 같은 트랜스폼으로 배치하고,Target2및Target3은 블록이 이동할 곳에 배치합니다.Target2및Target3에 다양한 스케일 및 회전을 부여하여 각 엔티티에 애니메이션이 적용됨에 따라 블록이 어떻게 바뀌는지 확인해 보세요.에디터에서
AnimatingBlock엔티티를 선택합니다. 디테일(Details) 패널에서세그먼트(Segments)배열에 세 개의 아이템을 추가합니다.SegmentStartPosition을 블록이 이동하도록 할 순서에 따라 각 타깃 엔티티로 설정합니다.PauseSeconds,AnimationDuration,EasingFunction도 변경하여 블록의 이동을 커스터마이징할 수 있습니다.마지막으로 아웃라이너(Outliner)에서
AnimatingEntitySet을 우클릭하고 프리팹으로 저장(Save As Prefab)을 선택합니다. 이 프리팹을animating_entity_prefab으로 명명합니다.
이전의 구성을 사용한 예시 프리팹 Target2 및 Target3의 스케일과 회전이 서로 다르기 때문에, AnimatingBlock은 해당 엔티티로 이동함에 따라 적절하게 스케일을 조절하고 회전합니다.
플랫폼 레벨 만들기
다 됐습니다! 이제 준비 작업을 모두 마쳤으니, 제작을 시작할 차례입니다! 생성한 프리팹을 사용하여 플랫폼 레벨을 빠르게 만들어 보세요!
레벨 시작 시 animating_entity_set_prefab을 사용하여 자체적으로 형성되는 다리 구조물을 만들어 보세요. 각 엔티티에서 자신만의 커스텀 메시로 mesh_component를 오버라이드하여 스타일을 가미할 수 있습니다. OneShot 애니메이션 모드를 사용하여 블록이 이동을 마칠 때 제자리에 머무르도록 합니다.
블록이 애니메이션을 통해 천천히 제자리에 배치되어, 플레이어가 건널 수 있는 다리를 만들어 줍니다.
다음으로, 제작한 animating_entity_set_prefab 중 몇 가지를 배치하여 플레이어가 조심스럽게 탐색해야 하는 일련의 플랫폼을 만듭니다. 각 세그먼트에서 AnimationDuration, PauseSeconds, EasingFunction을 다양하게 설정하여 각각의 플랫폼을 특별하게 만들고 플레이어가 긴장을 늦추지 못하게 해 보세요. 다음 구성에서 플레이어는 애니메이션 지속 시간과 일시정지 시간이 다양하게 설정된 세 개의 플랫폼을 지나가야 합니다.
용암을 뛰어넘어야 하는 점프는 훨씬 더 긴장됩니다.
모든 엔티티가 정확히 같은 시간에 시뮬레이션을 시작하기 때문에, 플랫폼도 모두 동시에 움직이기 시작합니다. 특히 같은 방향으로 움직이는 플랫폼이 여러 개인 경우 AnimationDuration 및 PauseSeconds 값을 다양하게 설정하지 않으면 점프가 불가능해지는 곳이 있을 수 있으므로 플랫폼을 배치하는 동안 이 점을 염두에 두어야 합니다.
루프로 사라지는 플랫폼도 있습니다. disappearing_entity_prefab을 사용하여 플레이어가 서로 다른 시간에 사라졌다가 다시 나타나는 플랫폼을 점프하여 지나가야 하는 섹션을 제작합니다. 이러한 플랫폼의 지속 시간 값을 다양하게 설정하여 플레이어에게 까다로운 상황을 연출해 보세요.
플레이어는 섹션을 건너려면 각 엔티티의 타이밍에 유의해야 합니다.
마지막으로 플레이어가 피해야 하는 장애물로 animating_entity_prefab을 사용해 보세요. 다음 구성에서 플레이어는 거대한 블록에 쫓기면서 동시에 연못을 가로질러 배치된 일련의 플랫폼을 건너야 합니다. 블록의 다양한 애니메이션 지속 시간과 일시정지 시간으로 인해 정신없이 연못을 건너야 하지만, 불가능한 것은 아닙니다.
거대한 큐브에 쫓길 때 연못가에서 편하게 휴식을 취할 수는 없죠.
직접 해보기
다 됐습니다! 이 가이드를 완료함으로써 커스텀 Verse 컴포넌트로 나만의 플랫포머를 제작하는 방법을 배웠습니다. 여기에서 배운 것을 활용하여 다음과 같은 작업을 해보세요.
동일한 플랫폼에서 여러 Verse 컴포넌트를 사용하여 흥미로운 시나리오를 제작해 보세요. 이동하는 동시에 사라지는 플랫폼도 좋습니다.
플랫포머에 사용할 수 있는 다른 종류의 컴포넌트로는 무엇이 있을지 생각해 보세요. 라이트 컴포넌트를 사용하여 밟아도 될 때 신호를 보내는 플랫폼이나, 플랫폼이 플레이어에게 피해를 주는지 여부를 알려주는 파티클 시스템 컴포넌트도 있습니다.
다른 커스텀 Verse 컴포넌트를 생성하여 새로운 타입의 장애물을 만들어 보세요. 올바른 색일 때만 통과할 수 있는 엔티티나, 플레이어의 위치를 탐지하고 천천히 따라가는 호밍 엔티티는 어떨까요?
완성된 코드
이 튜토리얼에서 작성한 완성된 코드는 다음과 같습니다.
disappear_on_loop_component.verse
using { /Verse.org }
using { /Verse.org/Native }
using { /Verse.org/Simulation }
using { /Verse.org/SceneGraph }
# Loops between hiding and showing the entity by enabling and disabling
# its static mesh and collision components.
disappear_on_loop_component := class<final_super>(component):
animate_to_targets_component.verse
using { /Verse.org }
using { /Verse.org/Native }
using { /Verse.org/Random }
using { /Verse.org/Simulation }
using { /Verse.org/SpatialMath }
using { /Verse.org/SceneGraph }
using { /Verse.org/SceneGraph/KeyframedMovement }
using { /UnrealEngine.com }
# Editor Tool Tips