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

Unity开发2D游戏之游戏背景的移动

程序员文章站 2024-03-16 17:53:46
...

在很多的2D横版游戏中,游戏背景都是不断地移动的,让人看起来好像是有无限长,但其实都是由几个背景图片拼接而成的,接下来我们就来说说怎样才能实现这样的效果

首先准备几张背景图片,背景图片的大小要一致。比如下面这样:

Unity开发2D游戏之游戏背景的移动Unity开发2D游戏之游戏背景的移动Unity开发2D游戏之游戏背景的移动

我们将每张图片的长度用length来表示,三张图片总的长度用total_length来表示。total_length=3*length

将三张图片都放入场景中,并且让每张图片都充满整个场景(这样做的目的是移动图片时不会出现断层的现象)

并排放置三张图片,就像上面那样。

接下来创建一个脚本,叫做BgControll,在每个背景图片上都添加一个BgControll脚本

在脚本中的Updata函数中写上这样的代码:

        Vector3 bgPosition = this.transform.position;
        Vector3 cameraPosition = mainCamera.transform.position; // mainCamera是相机的位置
        if (bgPosition.x + total_length / 2.0f < cameraPosition.x)
        {
            bgPosition.x += totalLength;
            this.transform.position = bgPosition;
        }
1、获取到背景图片当前的位置。

2、获取到相机当前的位置。

3、判断相机的位置是否到了三张图片的中心的(例如上面矩形的中心位置),如果是,则将该背景图片移动到另外两张图片的后面。由于每张图片上都绑定了BgControll脚本,所以就能保证背景的循环


经过这几个步骤后,就能实现背景跟随摄像机的移动而移动了。

如果想多放几张背景图片,可将上面代码中的total_length改变成 n*length,n就是背景图片的张数,然后判断条件改成

if(bgPosition.x + total_length/n < cameraPosition.x)
{
    ...
}

注意total_length和n至少要有一个是float型数据


读者可以在Camera上绑定一个脚本,让Camera向右移动,看背景是否始终在视野范围中。

相关标签: unity 游戏 2d