Unity

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;
        }
    }

}
上一篇下一篇

猜你喜欢

热点阅读