Unity3D 无限循环视差背景
2019-08-09 本文已影响0人
UnityAsk
今天我们来实现下 游戏中常用的循环视差背景效果,效果如上图。
首先准备5张背景图,用来做远中近景。
将背景图片的属性设置为Sprite
将5张背景图片拖入到场景中。为了能无缝循环 ,我们复制两份出来,一份设置x坐标为-20,一份设置x坐标为20,一份设置x坐标设置为0。用20做间距是由我们的背景图片尺寸决定的,可以根据自己的实际情况调整。
将同一层的三张图打组,并将脚本挂到组上。并以此设置Sprite的“Order in Layer” 值,越远的设置的值为越小。
1565010861832.jpg 1565010904045.jpg脚本如下:
using UnityEngine;
public class Parallax : MonoBehaviour {
private float length, startPos;
public float parallexEffect;
public GameObject cam;
void Start ()
{
startPos = transform.position.x;
length = GetComponent<SpriteRenderer>().bounds.size.x;
}
void FixedUpdate ()
{
float temp = (cam.transform.position.x * (1 - parallexEffect));
float dist = (cam.transform.position.x * parallexEffect);
transform.position = new Vector3(startPos + dist, transform.position.y, transform.position.z);
if (temp > startPos + length)
{
startPos += length;
}
else if (temp < startPos - length)
{
startPos -= length;
}
}
}