유니티 2D 게임개발, Parallax 배경 구현 멀티레이어 배경을 이용한 Parallax 스크롤링 효과 구현.

2D 게임을 개발할 때, 배경은 게임의 분위기를 결정짓는 중요한 요소입니다. 특히 Parallax 효과는 배경 요소가 다양한 깊이에서 움직여 시청자에게 깊이 있는 경험을 제공합니다. 본 글에서는 유니티 엔진을 사용해 멀티레이어 배경을 이용한 Parallax 스크롤링 효과를 구현하는 방법에 대해 자세히 설명하겠습니다.

Parallax 효과란?

Parallax 효과는 시각적으로 다양한 층의 배경 이미지를 사용하여 깊이를 시뮬레이션하는 기술입니다. 사용자가 화면을 스크롤하거나 이동할 때 각 배경 레이어가 서로 다른 속도로 이동하여 3D 효과를 만들어냅니다. 이러한 시각적 효과는 게임 플레이에 몰입감을 더할 수 있습니다.

유니티에서의 Parallax 배경 구현

유니티에서 Parallax 스크롤링 효과를 구현하기 위해서는 여러 가지 단계가 필요합니다. 다음은 그 단계들입니다.

1. 프로젝트 설정

유니티에서 새 2D 프로젝트를 생성합니다. ‘2D’ 템플릿을 선택하고, 프로젝트 이름을 입력한 후 생성합니다. 프로젝트가 로드되면, 다음 단계를 진행하세요.

2. 배경 이미지 준비

Parallax 효과를 위해 사용할 배경 이미지를 준비합니다. 이미지는 깊이에 따라 다양한 레이어로 나눕니다. 예를 들어, 다음과 같은 레이어로 나눌 수 있습니다.

  • Background Layer (가장 뒤쪽)
  • Midground Layer (중간)
  • Foreground Layer (가장 앞쪽)

3. Unity에 이미지 가져오기

준비한 이미지를 유니티의 Project 창에 드래그하여 가져옵니다. 이때, 각 배경 레이어에 맞는 스프라이트를 만들고, 필요한 경우 스프라이트 설정에서 ‘Pixel Per Unit’ 값을 조정하여 배경의 크기를 조절합니다.

4. 배경 레이어 배치

Hierarchy 창에서 새로운 Empty GameObject를 생성하여 “ParallaxLayer”라고 이름을 붙입니다. 이 GameObject는 모든 Parallax 레이어의 부모가 될 것입니다. 이제 각 배경 레이어를 이 게임 오브젝트의 자식으로 두세요.

5. 배경 레이어 이동

다음 단계는 사용자 입력에 따라 배경 레이어를 이동하는 것입니다. 이를 위해 새로운 C# 스크립트를 생성하고 “ParallaxController”라고 이름 붙인 후 아래 코드를 작성합니다.


using UnityEngine;

public class ParallaxController : MonoBehaviour
{
    public Transform[] layers; // 배경 레이어 배열
    public float scrollSpeed = 0.5f; // 스크롤 속도
    public float depthMultiplier = 0.1f; // 레이어 깊이에 따른 이동 속도 비율

    private float[] layerScales;

    void Start()
    {
        // 각 레이어의 스케일 값을 저장
        layerScales = new float[layers.Length];
        for (int i = 0; i < layers.Length; i++)
        {
            layerScales[i] = layers[i].position.z;
        }
    }

    void Update()
    {
        float movement = Input.GetAxis("Horizontal") * scrollSpeed * Time.deltaTime;

        for (int i = 0; i < layers.Length; i++)
        {
            float parallaxEffect = movement * layerScales[i] * depthMultiplier;
            layers[i].position += new Vector3(parallaxEffect, 0, 0);
        }
    }
}

6. 스크립트 적용

위에서 작성한 ParallaxController 스크립트를 ParallaxLayer GameObject에 추가합니다. Inspector 창에서 layers 배열에 각 배경 레이어를 드래그하여 추가하세요. 이 배열은 각 레이어의 위치를 조절하는 데 사용됩니다.

7. 테스트 및 조정

모든 구성 요소를 설정한 후, 게임을 실행하여 Parallax 효과를 테스트합니다. 스크롤 속도와 depthMultiplier 값을 조정하여 원하는 효과를 얻을 수 있습니다.

Parallax 효과의 고급 기능

기본적인 Parallax 스크롤링을 구현한 후에는 다음과 같은 추가 기능을 고려할 수 있습니다.

1. 다양한 입력 방식

키보드 입력 외에도 모바일 장치에서 터치 입력을 사용하거나, 마우스 움직임을 감지하여 Parallax 효과를 적용할 수 있습니다. 여기에 대한 코드는 다음과 같습니다.


void Update()
{
    Vector3 inputMovement = new Vector3(Input.GetAxis("Mouse X"), 0, 0); // 마우스 X축 이동 감지
    float movement = inputMovement.x * scrollSpeed * Time.deltaTime;

    for (int i = 0; i < layers.Length; i++)
    {
        float parallaxEffect = movement * layerScales[i] * depthMultiplier;
        layers[i].position += new Vector3(parallaxEffect, 0, 0);
    }
}

2. 자동 스크롤

게임의 설정에 따라 자동으로 배경을 스크롤시키는 기능을 추가할 수도 있습니다. 이를 위해 Update 메서드를 수정하여 특정한 방향으로 자동으로 이동하도록 설정할 수 있습니다.


void Update()
{
    float movement = scrollSpeed * Time.deltaTime;

    for (int i = 0; i < layers.Length; i++)
    {
        float parallaxEffect = movement * layerScales[i] * depthMultiplier;
        layers[i].position += new Vector3(parallaxEffect, 0, 0);
    }
}

3. 배경 오브젝트의 생명주기 관리

배경이 화면을 벗어나는 경우, 새로운 배경 오브젝트를 생성하거나, 기존 오브젝트를 재사용하는 방법도 고려할 수 있습니다. 이를 통해 리소스를 효율적으로 관리할 수 있습니다.

결론

이번 포스트에서는 유니티에서 Parallax 배경을 구현하는 방법을 자세히 살펴보았습니다. Parallax 효과를 통해 게임의 깊이감을 더하고, 플레이어의 몰입도를 높일 수 있습니다. 기본 구현 외에도 다양한 기능을 추가하여 더욱 효과적인 게임 개발이 가능하며, 실습을 통해 더 많은 아이디어를 얻을 수 있을 것입니다.

여러분도 이 방법을 활용하여 나만의 독창적인 2D 게임을 개발해 보세요. Parallax 효과는 사용자 경험을 극대화하는 데 큰 도움이 될 것입니다.