unity零基础开始学习做游戏(六)背景给我“滚”~
-------小基原创,转载请给我一个面子
一望无际的...空旷场景,看着实在是难受,不如添加些背景吧。如果要真的想好好设计关卡背景的话,最好是做一个地图编辑器,不过做开发工具毕竟有点点复杂且枯燥,以后放在别的系列里面再聊。本篇就做个非常简单的滚动屏幕吧
滚动屏幕的思路就是 两种与屏幕一样大小的背景图片A,B,让它俩无缝拼接同时同方向移动,当A移除视野后,坐标设置为B的后面。当B移除视野时,后面的A就能来“前赴后继”,然后B再跑到A后面,循环这个过程。(当然如果你有好多个背景串起来,跟跑火车似得,也是可以的,两张图交替是最简单的例子)下面看看怎么做

首先Canvas下创建个空物体Bgs,里面再创建空物体bgLayer,因为后期可能还有除了背景以外的层(花花草草什么的)
里面放2张image分别是bg1,bg2,各种下面放个Text显示文字(文字就是为了方便观察效果而已)

bg1和bg2都这样设置,因为小基的屏幕是1136X640的,所以这两背景也应该是同样大小

两个Text都这样设置就行了,一个显示文字“bg1”,一个显示文字“bg2”

Scene场景下看到的是这个样子,红框里面是相机的视野,Bg2再后面排队等待入场。
下面就是要添加代码控制这两张背景图了。小基在bgLayer上面添加一个脚本Scroll
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; public class Scroll : MonoBehaviour { public RectTransform[] bgTarget;
public float[] bgSpeeds; public Vector3[] moveDis; // Update is called once per frame
void Update () {
Move();
} Vector2 targetPos = Vector2.zero;
void Move()
{
for(int i = ; i < bgTarget.Length; i++)
{
targetPos = bgTarget[i].localPosition;
if(targetPos.x <= -Screen.width * 0.5 - bgTarget[i].sizeDelta.x * 0.5)
{
bgTarget[i].localPosition += moveDis[i];
}
else
{
bgTarget[i].Translate(bgSpeeds[i] * Time.deltaTime * Vector2.left);
}
}
}
}
非常非常简单的代码
bgTarget是个数组,你可以拖动多个背景图放在里面(放几个就有几个在视野外排队)
bgSpeeds是个数组,里面放对应的移动速度,无缝通向移动肯定是要速度一致了,所以这里不用数组也行。这里这么写,你可以尽情放飞自我,速度不同也说不定挺有意思的。
moveDis同样数组,可以设置各种移动位置,这个例子里面就是A移除视野后,瞬间移动到一个新的位置(应该放在B的后面)
Update()里面一直调用Move()方法,就是自动滚动。如果你想做当你移动的时候,背景滚动的话,那就在控制主角移动的时候,调用这边的背景移动就行了。
Move()方法里面,就是判断每一个背景是否已经超出了视野范围(这里只做了左移动移除视野的情况。如果运动方向不同,判断逻辑对应也不同)
如果超出视野,就设置新位置,如果没有超出,就Translate向着Vector2.left(左边)移动,速度你可以自己控制。

把bg1,bg2拖进去,MoveDis这个值是一张背景1136,两张就是2272
点击运行看效果
两张图片中间会有个缝?!(为啥网上光看别人写代码,但是没有人提到这个,或者演示效果?或许小基没找到?反正这块遇到了才发现有个小坑)
(小基推测是bg1移除视野瞬间,挪动到bg2的时候,bg2已经移动了)
这个坑真的有点坑!!!!!!!!

这回改下代码,看看bg1移动到bg2后面时,两个图的位置坐标差多少!

(╯°O°)╯┻━┻ 解决不了了!!!!!!!!!!!!
除了使用材质,或者把背景图片大小放大一些之外的方法,有什么办法能解决这个缝的问题呢??????????????请指教Orz
unity零基础开始学习做游戏(六)背景给我“滚”~的更多相关文章
- unity零基础开始学习做游戏(五)看看你的完成度,进度条了解一下?
-------小基原创,转载请给我一个面子 上回书说道,英雄和魔王都做完了,子弹也能发射了,就是不知道啥时候能干死魔王.那小基得做个血条来展示一下,他离死不远了(•౪• ) 其实血条也可以看作是进度条 ...
- unity零基础开始学习做游戏(三)鼠标输入,来个虚拟摇杆怎么样?
-------小基原创,转载请给我一个面子 现在移动游戏越来越火,大家都拿手机平板玩游戏,没有键盘和手柄输入,所以就不得不看看虚拟摇杆怎么搞?(小基对于没有实体反馈不是很喜欢呢) 首先要清楚,鼠标操作 ...
- unity零基础开始学习做游戏(一)为了实现你的游戏,你需要提前做的准备工作
-------小基原创,转载请给我一个面子 正所谓,工欲善其事,必现准备好电脑.接下来跟着小基一步一步来搭建你的开发环境吧 1.下载安装unity 上面的那个是破解软件,下面是unity5.5.6的安 ...
- unity零基础开始学习做游戏(二)让你的对象动起来
-------小基原创,转载请给我一个面子 小基认为电子游戏与电影最重要的区别就是交互,如果电子游戏没有让你输入的交互功能的话,全程都"只可远观,而不可鼓捣"的话,你可能是在看视频 ...
- unity零基础开始学习做游戏(四)biu~biu~biu发射子弹打飞机
-------小基原创,转载请给我一个面子 主角都能移动了,那不得做点什么伸张正义,守护世界和平的事嘛,拿起家伙biu~biu~biu~ 首先得做一个好人和一个坏人 老规矩,Canvas下创建两个Im ...
- 零基础如何学习 Web 安全?(转)
在网上看了一篇文章<零基础如何学习 Web 安全?>,虽然很多东西的都不是很懂,感觉挺好的copy过来,慢慢消化: 文章地址:https://www.zhihu.com/question/ ...
- javascript入门视频第一天 小案例制作 零基础开始学习javascript
JavaScript 是我们网页设计师必备的技能之一.我们主要用javascript来写的是网页特效.我们从零基础开始学习javascript入门. 但是,好的同学刚开始不知道怎么学习,接触js,因此 ...
- 《零基础入门学习Python》【第一版】视频课后答案第001讲
测试题答案: 0. Python 是什么类型的语言? Python是脚本语言 脚本语言(Scripting language)是电脑编程语言,因此也能让开发者藉以编写出让电脑听命行事的程序.以简单的方 ...
- 大牛整理最全Python零基础入门学习资料
大牛整理最全Python零基础入门学习资料 发布时间:『 2017-11-12 11:56 』 帖子类别:『人工智能』 阅读次数:3504 (本文『大牛整理最全Python零基础入门学习资料 ...
随机推荐
- JAVA数组的定义以及使用1
public class HelloWorld { public static void main(String[] args){ // Scanner s = new Scanner(System. ...
- Jquery EasyUI +Ajax +Json +一般处理程序 实现数据的前台与后台的交互 --- 善良公社项目
经过上一篇博客,本节主要是来看实现的功能是后台的数据通过json数据传过来,前台修改的数据再传回数据库之后页面再次更新table中的数据: 图示: 实例:前台的代码 <%--表格显示区--%&g ...
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(十二)
回到Xcode,新建Level1类,继承于CCNode. 打开Level1.m在初始化方法中添加如下方法: -(void)didLoadFromCCB{ [self initBasket]; [sel ...
- [WinForm]动态显示本地目录图片与悬浮窗
加载显示: if (File.Exists(@"D:\产品图片\" + item + ".jpg")) { //需要判断是否存在图片 Image img = I ...
- 【翻译】Sencha Ext JS 5发布
原文:Announcing Sencha Ext JS 5 简介 我代表Sencha和整个Ext JS团队,很自豪的宣布,在今天,Sencha Ext JS 5发布了.Ext JS 5已经迈出了一大步 ...
- 《java入门第一季》之类String类小案例
案例一: /* * 需求:把数组中的数据按照指定个格式拼接成一个字符串 * 举例: * int[] arr = {1,2,3}; * 输出结果: * "[1, 2, 3]" * 分 ...
- 【一天一道LeetCode】#31. Next Permutation
一天一道LeetCode系列 (一)题目 Implement next permutation, which rearranges numbers into the lexicographically ...
- Material Design之NavigationView和DrawerLayout实现侧滑菜单栏
本文将介绍使用Google最新推出规范式设计中的NavigationView和DrawerLayout结合实现侧滑菜单栏效果,NavigationView是android-support-design ...
- 2016/1/9:深度剖析安卓Framebuffer设备驱动
忙了几天,今天在公司居然没什么活干 ,所以早上就用公司的电脑写写之前在公司编写framebuffer的使用心得体会总结,这也算是一点开发经验,不过我还没写全,精华部分还是自己藏着吧.直到下午才开始有点 ...
- Orientation Auto Rotation旋转屏幕crash问题(Unity3D开发之十四)
猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/44133127 ...