2024년 1월 2일 화요일

unity background scrolling

Unity에서 백그라운드 스크롤을 할 수 있는 방법입니다.

여러장의 이미지를 이용해서도 가능하지만 여기에서는 Material 을 이용해서 하는 방법을 정리하였습니다. 실제 따라해 보니 동작이 안되던 부분도 있고 해서 여기 저기 내용을 합쳐서 정리해 보았습니다.

2D 기준으로 테스트 하였습니다.


1. 이미지 준비

스클롤을 하려면 적당한 이미지가 필요로 합니다.

좌우로 스크롤 하려면 당연히 좌우측 이미지가 연결되어야 합니다.



2. Unity 에서 이미지 Wrap Mode에서 Repeat 설정


3. Create -> Meterial 을 만들고 Mobile/Particles/Alpha Blended 설정을 합니다.


4. 1에서 준비한 background 이미지를 추가합니다.

5. 4번에서 만든 이미지에 Meterial 적용합니다.

Sprite Renderer 항목중 Meterial 항목이 있습니다. 거기에 3번에서 생성한 파일을 Drag&Drop 해주면 추가가 됩니다.


6. 코드 작업을 해서 컴포넌트에 추가합니다.

using System.Collections;
using System.Collections.Generic;
using DG.Tweening;
using UnityEngine;
using UnityEngine.UIElements;
 
public class ScrollBG : MonoBehaviour
{
    public float scrollspeed = 0.2f;
    public bool isScrollX = true;
    Material material;
 
 
    private void Start()
    {
        material = GetComponent<Renderer>().material;
    }
 
    void Update()
    {
        Vector2 newOffset = Vector2.zero;
 
        if (isScrollX)
        {
            float newOffSetX = material.mainTextureOffset.x + scrollspeed * Time.deltaTime;
            newOffset = new Vector2(newOffSetX, 0);
        }
        else
        {
            float newOffSetY = material.mainTextureOffset.y + scrollspeed * Time.deltaTime;
            newOffset = new Vector2(0, newOffSetY);
        }
 
        material.mainTextureOffset = newOffset;
    }
}
 

7. 스크롤 방향은 isScrollX 와 scrollspeed 음수 양수로 조절 하면 됩니다.


8. 동작이 안되는 경우

- 전혀 동작이 안된다... 이미지에 Meterial 설정이 제대로 반영되고 있는지 확인 바랍니다.

- 동작은 되는데 한번만 되고, 스크롤이 아래와 같은 현상이면 2번 설정을 확인해보시기 바랍니다.







댓글 없음:

댓글 쓰기