Unity3D——学习分享(十)2D游戏背景循环制作

背景移动

平时玩的2D类游戏,有的时候在需要一个动态背景,比如在太空大战的飞行游戏,它们的背景就是移动的背景,但是稍微细心点你会发现,背景虽然时刻在移动,但是背景的内容仿佛一直在循环重复。

在这里插入图片描述

制作原理

这个原理其实很简单,其实背景本身就是一张图片,它是通过不断地循环移动。我们来看一下循环移动的效果。

在这里插入图片描述

我们可以看到在背景移到底部并回到初始位置的这段时间内,场景就出现了漏洞。
我们可以通过两张背景图片的循环,让第一张背景移到屏幕外的时候,第二张背景图片迅速跟上,让着两张图片一直循环下去就达到了我们想要的背景循环效果。

在这里插入图片描述

下图能清楚地看出两张图片在循环移动,在Game视图下场景的效果还是比较不错的。

在这里插入图片描述

代码的添加

逻辑理清楚后,就是代码的编写了,首先我们要知道背景图片的高度,两张图片同时移动,当下面一张图片完全移动到屏幕外时,让它回到原始位置继续循环,这时它移动的距离就是一张图片的高度。在这个案例中,背景图片的高度为6,也就是说当图片向下移动6后,让它回到原始位置进行下一轮的循环,第二张同样如此,只是这两张图片的原始位置不同而已。

代码如下

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

public class NewBehaviourScript : MonoBehaviour {
public float speed = 1.0f;

void Update () {
        if (transform.position.y < 6) {
            transform.position = new Vector3(0, 6, 0);//Y值可适当改变,但是要使图片低端能贴合到背景里
        }
        transform.Translate(0, -speed * Time.deltaTime,0);
 }
}
这个数值根据自己背景图片的高度来定,另外这个值最好要比你所设置的高度小一点,这样可以使两张背景移动时不会出现细微的缝隙,融合效果会更好。
另外需要注意的一点是背景图片的(0,0,0)点的位置,如果你的零点在图片的中心那么比较时就要用高度的一半来进行判断。

猜你喜欢

转载自blog.csdn.net/weixin_43159569/article/details/84728551