Unity开发2D游戏之游戏背景的移动
2018-01-06 16:15
1681 查看
在很多的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)
{
bgPosition += totalLength;
this.transform.position = bgPosition;
}1、获取到背景图片当前的位置。
2、获取到相机当前的位置。
3、判断相机的位置是否到了三张图片的中心的(例如上面矩形的中心位置),如果是,则将该背景图片移动到另外两张图片的后面。由于每张图片上都绑定了BgControll脚本,所以就能保证背景的循环
经过这几个步骤后,就能实现背景跟随摄像机的移动而移动了。
如果想多放几张背景图片,可将上面代码中的total_length改变成 n*length,n就是背景图片的张数,然后判断条件改成
if(bgPosition.x + total_length/n < cameraPosition)
{
...
}
注意total_length和n至少要有一个是float型数据
读者可以在Camera上绑定一个脚本,让Camera向右移动,看背景是否始终在视野范围中。
首先准备几张背景图片,背景图片的大小要一致。比如下面这样:
我们将每张图片的长度用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)
{
bgPosition += totalLength;
this.transform.position = bgPosition;
}1、获取到背景图片当前的位置。
2、获取到相机当前的位置。
3、判断相机的位置是否到了三张图片的中心的(例如上面矩形的中心位置),如果是,则将该背景图片移动到另外两张图片的后面。由于每张图片上都绑定了BgControll脚本,所以就能保证背景的循环
经过这几个步骤后,就能实现背景跟随摄像机的移动而移动了。
如果想多放几张背景图片,可将上面代码中的total_length改变成 n*length,n就是背景图片的张数,然后判断条件改成
if(bgPosition.x + total_length/n < cameraPosition)
{
...
}
注意total_length和n至少要有一个是float型数据
读者可以在Camera上绑定一个脚本,让Camera向右移动,看背景是否始终在视野范围中。
相关文章推荐
- Unity学习笔记-2D横版游戏中的背景移动
- cocos2d-x-3.2塔防游戏开发1:背景,地图,obj,产生移动NPC的实现
- Unity2D游戏开发基础教程1.2 项目、资源和场景
- Phaser是一款专门用于桌面及移动HTML5 2D游戏开发的开源免费框架
- 学习手机游戏开发的两个方向 Cocos2d-x 和 Unity 3D/2D,哪个前景更好?
- unity3d开发2d游戏中控制摄像机移动以及主角移动
- Unity 2D游戏开发教程之2D游戏的运行效果
- Unity 2D游戏开发教程之精灵的死亡和重生
- 强大的游戏开发工具Unity3D推出2D开发工具,unity将混合3D与2D开发
- Unity 2D独立开发手记(一):游戏大纲
- Unity 游戏开发技巧集锦之使用cookie类型的纹理模拟云层的移动
- 【使用Unity开发Windows Phone上的2D游戏】(2)初识工具
- 学习手机游戏开发的两个方向 Cocos2d-x 和 Unity 3D/2D,哪个前景更好?
- Unity 2D游戏开发教程之使用脚本实现游戏逻辑
- 拾荒者Unity2D游戏开发流程笔记
- Phaser是一款专门用于桌面及移动HTML5 2D游戏开发的开源免费框架
- 【手游游戏引擎】学习游戏开发的两个方向 Cocos2d-x 和 Unity 3D/2D (二)
- 在unity3d开发2d游戏控制摄像机移动以及主角移动的方法
- Unity2d 5.1 弱联网游戏制作 (一)场景创建、添加组件、精灵移动、主摄像机跟随
- Android游戏开发---2D游戏中背景的绘制