笔记|Unity 3D 背景图片的循环滚动

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/PR_sc/article/details/80907208

用Canvas创建了两张Image拼接作为背景。
脚本挂在摄像机上
把两张image拖到MOVE(Script)设置为bg1、bg2

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

public class MOVE : MonoBehaviour {

    public Transform bg1;
    public Transform bg2;
    //也可以用GameObject ; 具体区别 自己查

    float bg1PosX;//bg1初始位置X轴的值
    float bg2PosX;//bg2初始位置X轴的值
    //在Start方法之前的函数、
    //即使脚本没有被激活也会执行且只运行一次

    // Use this for initialization
    //在整个脚本生命周期中只被调用一次
    //它是在第一次执行Update函数之前调用
    //用于做数值的初始化设置
    void Start () {
        //bg2 = transform.Find("Img_BG2");
        //其实可以用代码调用图片的。
        bg1PosX = bg1.transform.position.x;
        bg2PosX = bg2.transform.position.x;
    }

    // Update is called once per frame
    //每帧调用一次,每一次循环间隔在0.01-0.025秒之间(电脑越好循环的间隔越短)
    //循环的基础函数(在初始化函数结束后开始循环函数)
    void Update () {
        bg1.Translate(Vector3.left * Time.deltaTime * Screen.width);
        bg2.Translate(Vector3.left * Time.deltaTime * Screen.width);
        if (bg2.transform.position.x - bg1PosX < 0)
        {
            bg1.position += new Vector3(bg2PosX -bg1PosX,0,0);
            bg2.position += new Vector3(bg2PosX - bg1PosX, 0, 0);
        }
    }
}

以2D对象Sprite 创建背景图片
把脚本拖到两个Sprite 对象上即可。

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

public class bird : MonoBehaviour {
    float speed = 0.01f;

    // Use this for initialization
    void Start () {
        print(transform.position);
    }

    // Update is called once per frame
    void Update () {
        transform.Translate(Vector3.left * Time.deltaTime*Screen.width);
        if (transform.position.x <-6.33f) {
            transform.position = new Vector3(6.27f, transform.position.y, transform.position.z);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/PR_sc/article/details/80907208