[Unity] Parallax 패럴랙스 배경 이동

고현규·2024년 2월 8일
0
post-custom-banner


에셋 스토어에서 구매한 배경을 살펴봤다.
7개의 레이어로 구성된 배경이고 같은 배경을 3개씩 왼쪽, 가운데, 오른쪽에 배치해서 왼쪽에 있는 배경을 계속 오른쪽으로 옮겨서 반복시키는 형태였다.
마치 무거운 돌을 옮기는 위해 통나무를 앞으로 옮기는 형태이다.

public int backgroundNum;
public Sprite[] Layer_Sprites;
private GameObject[] Layer_Object = new GameObject[7];
private int max_backgroundNum = 19;
void Start()
{
    for (int i = 0; i < Layer_Object.Length; i++){
        Layer_Object[i] = GameObject.Find("Layer_" + i);
    }
    
    ChangeSprite();
}

void Update() {
    //for presentation without UIs
    if (Input.GetKeyDown(KeyCode.RightArrow)) NextBG();
    if (Input.GetKeyDown(KeyCode.LeftArrow)) BackBG();
}

void ChangeSprite(){
    Layer_Object[0].GetComponent<SpriteRenderer>().sprite = Layer_Sprites[backgroundNum*7];
    for (int i = 1; i < Layer_Object.Length; i++){
        Sprite changeSprite = Layer_Sprites[backgroundNum*7 + i];
        //Change Layer_1->7
        Layer_Object[i].GetComponent<SpriteRenderer>().sprite = changeSprite;
        //Change "Layer_(*)x" sprites in children of Layer_1->7
        Layer_Object[i].transform.GetChild(0).GetComponent<SpriteRenderer>().sprite = changeSprite;
        Layer_Object[i].transform.GetChild(1).GetComponent<SpriteRenderer>().sprite = changeSprite;
    }
}

스프라이트를 배열에 모두 모아두고 바꾸고자 하는 스프라이트 위치로 옮겨서 모두 한번에 옮기는 방식을 사용하고 있었다.

현재 카메라 이동시키는 방법으로 배경을 움직이고 있는데
내가 필요한 로직은 배경만 움직이는 방법이라 이러한 형태로 변경해야 한다.

profile
게임 개발과 기획
post-custom-banner

0개의 댓글