✍️ 개요


[ 2D Endless Platform 구현 (1편) ]
[Unity 기능] 2D Endless Platform 구현 (1편)
✍️ 개요 최근에 끝이 없는 2D Platform을 제작하고 있습니다. 하나의 Layer만 사용하는 Serial Endless Platform, 그리고 여러 개의 Multi Layer을 사용하는 Parallel Endless Platform으로 구성하려고 합니다.
gus6615.tistory.com
이전에 끝이 없는 2D Platform 기능에서 하나의 Layer만 사용하는 Serial Endless Platform을 구현했습니다.
오늘은 하나가 아닌, 여러 개의 Layer을 사용하는 Parallel Endless Platform을 구현해보도록 하겠습니다.
※ 위 포스터와 코드가 변경된 부분이 많습니다.
📌 시스템 설계



Parallel Endless Platform은 N개의 Serial Endless Platform이 합쳐진 개념입니다.
EndlessPlatformSerialSpawner는 1개의 Layer에 해당하는 맵을 담당합니다.
즉, N개의 EndlessPlatformSerialSpawner을 다루는 하나의 컨트롤러를 만들면 됩니다.
이때, 각각의 SerialSpawner를 세심하게 조절할 수 있도록 할 예정입니다.
(각 Layer의 이동속도를 서로 다르게 표현하여 입체적으로 연출)
📌 코드 분석

위 하이러키를 살펴보면 구조를 쉽게 파악할 수 있습니다.
부모 오브젝트에 Rarallel Spawner을 추가하고, 자식 오브젝트들에게는 Serial Spawner을 추가합니다.
이때, Parallel Spawner에 의해 컨트롤되는 Serial Spawner라면 Self Managed을 체크 해제합니다.
(Serial Spawner가 스스로 동작한다면 체크)
※ 이 부분은 이전 포스터 코드와 다른 부분으로, 마지막 문단인 [ 코드 첨부 ] 을 확인해주세요.
public class EndlessPlatformParallelSpawner : MonoBehaviour
{
[SerializeField] private float minMoveSpeed;
[SerializeField] private float maxMoveSpeed;
private List<EndlessPlatformSerialSpawner> spawners;
private void Start()
{
spawners = new List<EndlessPlatformSerialSpawner>(GetComponentsInChildren<EndlessPlatformSerialSpawner>());
if (spawners.Count == 0)
{
Debug.LogError("No spawner found.");
return;
}
spawners[0].Initialize(maxMoveSpeed);
for (int i = 1; i < spawners.Count; i++)
{
var moveSpeed = Mathf.Lerp(maxMoveSpeed, minMoveSpeed, (float)i / (spawners.Count - 1));
spawners[i].Initialize(moveSpeed);
}
}
private void Update()
{
foreach (var spawner in spawners)
{
spawner.SpawnRightPlatformNode();
spawner.SpawnLeftPlatformNode();
spawner.ClearPlatformNode();
spawner.MovePlatformNode();
}
}
EndlessPlatformParallelSpawner은 사실 관리자에 가깝습니다.
결국 내부 로직은 EndlessPlatformSerialSpawner이 수행할 뿐이죠.
추가로 각 Layer의 속도를 Layer 순서에 따라 차별화하는 역할도 수행합니다.

위 영상처럼 각 Layer가 서로 다른 속도로 이동하며 입체감을 줍니다.
📌 코드 첨부
끝 없는 2D Platform 기능은 아래에서 자세히 살펴볼 수 있습니다.
[ 2D Endless Platform 구현 (1편) ]
[Unity 기능] 2D Endless Platform 구현 (1편)
✍️ 개요 최근에 끝이 없는 2D Platform을 제작하고 있습니다. 하나의 Layer만 사용하는 Serial Endless Platform, 그리고 여러 개의 Multi Layer을 사용하는 Parallel Endless Platform으로 구성하려고 합니다.
gus6615.tistory.com
'유니티(Unity) > 콘텐츠 기능' 카테고리의 다른 글
[Unity 기능] 2D Bone Animation 제작 (0) | 2025.01.05 |
---|---|
[Unity 기능] 2D Endless Platform 구현 (1편) (2) | 2025.01.01 |
[Unity 기능] 컴파일 시점 제어하기 (1) | 2024.12.25 |
[Unity 기능] Sprite Atlas에 대하여 (1) | 2024.12.15 |
[Unity 기능] 9-Slicing Sprite 제작 (1) | 2024.12.07 |