撰写了文章 发布于 2020-04-09 14:58:22
Unity 2D滚动背景
最近在做个2D项目,做2D背景卷轴式滚动,看到了个新思路感觉不错.
传统2D卷轴滚动是生成三个背景,摄像机往右移动,遇到红色边线时候把1移动到3的右边来实现循环滚动。
看到ytb一印度老哥用quad,repeat材质offset做的,很是效率。1分钟解决问题,代码量少。虽然不像传统方法一样容易处理景深,但是足以应付大部分情况。
首先场景里,新建3D Object-Quad
1 删掉remove mesh collider component
2 重置 reset transform
把准备好的背景图片做成材质球,图片wrap mode选择repeat
把材质球拖进quad,shader改成texture,不然发黑
新建个script,拖到quad下面就完工。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ScrollingBackground : MonoBehaviour
{
public float bgSpeed;
public Renderer bgRend;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
bgRend.material.mainTextureOffset += new Vector2(0f, bgSpeed * Time.deltaTime);
}
}
bgspeed控制速度,这里是y轴滚动。如果要做x轴滚动vector2里面,前后掉一下位置就行了。
印度老哥视频链接:
https://www.youtube.com/watch?v=32EIYs6Z18Q
END