Unity - 2D 종스크롤 슈팅 : 원근감 있는 무한 배경 만들기

TXMAY·2023년 10월 4일
0

Unity 튜토리얼

목록 보기
27/33
post-thumbnail

이번 강좌는 원근감 있는 무한 배경 만들기에 관한 강좌다.


준비하기

빈 오브젝트 3개를 만들고 각 오브젝트에 하위 오브젝트로 배경 스프라이트를 3개씩 생성한다.
그리고 Order Layer로 순서를 조정하고, 서로 나란히 있도록 오브젝트의 Y축을 10, 0, -10으로 설정한다.
그런 다음 'Background.cs' 파일을 만든 후, 상위 배경 오브젝트에 넣고 다음과 같이 코드를 작성한다.

using UnityEngine;

public class Background : MonoBehaviour
{
    public float speed;

    void Update()
    {
        Vector3 curPos = transform.position;
        Vector3 nextPos = Vector3.down * speed * Time.deltaTime;
        transform.position = curPos + nextPos;
    }
}

스크롤링

다만 계속해서 실행하면 더 이상 배경이 나오지 않고 잘리게 된다.
그렇기에 카메라에서 보이지 않는 배경을 다시 위로 이동시켜 무한한 것처럼 만들어야 한다.
다음과 같이 코드를 추가한다.

...

public int startIndex;
public int endIndex;
public Transform[] sprites;

float viewHeight;

void Awake()
{
    viewHeight = Camera.main.orthographicSize * 2;
}

void Update()
{
   	...

    if (sprites[endIndex].position.y < viewHeight * (-1))
    {
        Vector3 backSpritePos = sprites[startIndex].localPosition;
        Vector3 frontSpritePos = sprites[endIndex].localPosition;

        sprites[endIndex].transform.localPosition = backSpritePos + Vector3.up * viewHeight;

        int startIndexSave = startIndex;
        startIndex = endIndex;
        endIndex = (startIndexSave - 1 == -1) ? sprites.Length - 1 : startIndexSave - 1;
    }
}

orthographicSize : orthographic 카메라 Size

패럴랙스

패럴랙스(Parallax) : 거리에 따른 상대적 속도를 활용한 기술
각 배경의 속도를 다르게 설정해 배경에 원근감을 준다. (제일 위에 보이는 배경이 가장 빠르고, 제일 밑에 보이는 배경이 가장 느리게 설정한다)


배경에 원근감을 주는 방법이 궁금했는데 생각보다 간단한 방법이어서 놀랐다.

profile
게임 개발 공부하는 고양이

0개의 댓글