티스토리 뷰

 

 

 

 

Unity에서 2D로 게임을 개발하다 보면 계속해서 스크롤 되는 배경이 필요할 때가 있다.

 

구현 방식에는 여러 가지가 있지만 이 글에서는 카메라는 고정하고 이미지 자체를 스크롤 하는 방식을 사용한다.

 

 

먼저 Canvas 오브젝트를 생성하고 Render Mode를 Screen Space - Camera로 설정한 다음, Render Camera를 현재 사용하는 카메라로 설정해 준다.

 

 

그리고 Canvas 오브젝트의 자식 오브젝트로 Image 오브젝트를 생성해 준다.

 

 

Source Image는 스크롤 할 배경 이미지로 설정해 주고,

 

Material은 새로 생성해서 설정해준 뒤 Shader를 Unlit/Transparent로 설정해 준다.

 

 

배경 이미지는 반복해서 스크롤 되어야 하므로 Warp Mode를 Repeat으로 설정해 준다.

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class BackgroundScroll : MonoBehaviour
{
    public Image background;

    public float backgroundSpeed = 0.1f;

    Vector2 backgroundScrollOffset = Vector2.zero;

    private void Start()
    {
        background = transform.Find("Building").GetComponent<Image>();
    }

    private void Update()
    {
        ScrollBackgroundImage();
    }

    private void ScrollBackgroundImage()
    {
        backgroundScrollOffset.x += (backgroundSpeed * Time.deltaTime);
        background.material.mainTextureOffset = backgroundScrollOffset;
    }
}

 

마지막으로 Canvas 오브젝트에 위와 같은 내용의 C# 스크립트 파일을 작성해서 추가해 준다.

 

위 코드는 Canvas 오브젝트의 자식 오브젝트 중 배경 이미지를 찾아서 material의 offset 값을 매 프레임마다 변환하여 이미지를 스크롤 시키는 기능을 가지고 있다.

 

 

실행하면 위와 같이 이미지가 계속해서 스크롤 된다.

 

 

 이미지를 여러 개 사용하고 스크롤 속도를 다르게 설정해 주면 위처럼 표현할 수도 있다.

 

 

 

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함