[Unity 2D] Scrolling BackgorundUnity/2D2023. 8. 10. 15:55
Table of Contents
✌️개요
런게임의 무한으로 흘러가는 배경으로 사용하는 그것
트랜스폼으로 움직이고 이어붙이면 FPS가 떨어지면 아래 스샷처럼 틈이 발생하게 된다.
위의 문제를 차단하기위한 방법은 Material의 texture offset을 활용하는 방법
🔥본문
1. 텍스쳐 세팅에서 Wrap Mode를 Repeat으로 변경
2. SpriteRenderer 배경을 3D Object - Quad로 변경
3d Quad를 쓰는 이유는 Spritre Renderer에서 텍스쳐 offset을 사용하면 이미지가 이상하게 잘려보인다.
3. 다음 코드 사용
public class OffsetScrolling : MonoBehaviour
{
public float scrollSpeed;
private Renderer renderer;
private Vector2 savedOffset;
void Start ()
{
renderer = GetComponent<Renderer> ();
}
void Update ()
{
float x = Mathf.Repeat (Time.time * scrollSpeed, 1);
Vector2 offset = new Vector2 (x, 0);
renderer.sharedMaterial.SetTextureOffset("_MainTex", offset);
}
}
📌레이어가 여러개일 경우(병렬 백그라운드) 아래처럼 레이어를 클래스로 만들어서 사용했다.
[System.Serializable]
public class ScrollLayer
{
[SerializeField] private string layerName;
[SerializeField] private Material mat;
public ScrollMapController MapController { get; set; }
public void ScrollUpdate()
{
float x = Mathf.Repeat(scrollSpeed * MapController.CurrentSpeed * 0.5f * Time.time, 1);
Vector2 offset = new Vector2(x, 0);
mat.SetTextureOffset("_MainTex", offset);
}
}
🔗참조
'Unity > 2D' 카테고리의 다른 글
[Unity2D] 공중 플랫폼(일방통행 플랫폼) 만들기 (0) | 2023.01.25 |
---|