欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-02 09:29:00
...

用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);
        }
    }
}
相关标签: Unity 3D