Flapper Bird的学习笔记(二)
因为有一个超屌的梦想,所以就绝不会做一个孬种的追梦人!
本章节主要目的:
- 实现小鸟的飞行。
- 实现管道的随机出现。
- 实现相机跟随。
上次主要是场景的布置,这节全力拿下代码。
1.小鸟飞行(一种制作2D动画的小技巧,shader的理解和掌握)
首先看到的是一张包含三张不同状态的小鸟图片,我们需要做的是把这三张不同状态的小鸟组合成一组动图,实现小鸟飞行的效果。

打开开始创建的小鸟材质球,会看到里面的Shader属性,更改属性值后会但长度显示其中的一部分。通过调节Tilling和offset值达到预期效果,这个也可以自己试着改一下值,看一下效果。图中0.3333是为了达到1/3图片的效果,然后再通过代码实现小鸟飞行。(见证奇迹的时候到了,呵 呵~)

public float timer = 0; //定义计时变量
public int frameNumber = 10; //每秒的次数
public int frameCount = 0; // 计数变量
timer += Time.deltaTime; //
if (timer >= 1.0f / frameNumber)
{
int frameIndex = frameCount % 3; //索引到第几部分 小鸟图片分为三部分,0,1,2
frameCount++;
timer -= 1.0f / frameNumber; //没生成一个小鸟动作,重置时间 this.GetComponent<Renderer>().material.SetTextureOffset("_MainTex", new Vector2(0.3333f * frameIndex, 0)); //获取该部分小鸟图片,达到小鸟飞行的效果
}
2. 管道的随机生成
为了达到游戏可玩性效果,实现管道随机生成。在管道随机生成的过程中,由于管道的数量在整个相机现实的界面中生成多对,我们采用预制的方式有效提高效率。代码如下:
public void RandomGeneratePosition()
{
float pos_y = Random.Range(-0.4f, -0.1f);//主要用随机函数获取Y的值,达到管道出现参差不齐的效果。
this.transform.localPosition = new Vector3(this.transform.localPosition.x, pos_y, this.transform.localPosition.z);
}
这里如果有些关键字不理解可以查Unity圣典
3. 背景图片的循环
这一部分是通过在第二个背景图片中间一点的地方设置触发器(保证小鸟能够水平移动时能够和触发器有交互),再设置一对象作为基础点,然后在其X坐标的基础上加上背景图片的宽度,以达到场景延伸的效果。具体效果代码:
public Transform CurrentBg;
public Pipe pipe1;
public Pipe pipe2;
public void OnTriggerEnter(Collider other)
{
if (other.tag == "Player")
{
Transform firstBg= GameMaanager._intance.firstBg;
CurrentBg.position = new Vector3(firstBg.position.x + 10, CurrentBg.position.y, CurrentBg.position.z);
GameMaanager._intance.firstBg = CurrentBg; pipe1.RandomGeneratePosition();
pipe2.RandomGeneratePosition();
}
}
这里要提到触发器的几个方法OnTriggerEnter()、OnTriggerStay()、OnTriggerExit(),分别是进入、停留、离开触发器。具体操作可以再Unity圣典的脚本手册中查阅。
以上是这次的代码实现过程,虽然很简单,对于初次接触或是不熟练语法的菜鸟还是挺管用的。就我个人而言,这节不光是对本游戏的代码记忆和理解,还应该有自己的见解和延伸,这样才能达到学习的效果。
愿你我在每一个晚上都能拥抱梦想入睡。晚安,好梦!
Flapper Bird的学习笔记(二)的更多相关文章
- Flapper Bird的学习笔记(一)
因为我有一个超屌的梦想,所以就绝不做孬种的追梦人! 本文主要目的是为了实现Flapper Bird的功能. 另外一个目的是为了加强对Unity引擎的理解和掌握. 新人一枚,如若看到是我幸运.若是发现错 ...
- Flapper Bird的学习笔记(三)
因为我有一个超屌的梦想,所以就绝不会做一个孬种的追梦人! 完成音效的添加 单例模式 游戏的状态切换 1. 单例模式 首先呢,说一下单例模式.何为单例?单例模式是一种常用的软件设计模式.在它的核心结构中 ...
- WPF的Binding学习笔记(二)
原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...
- AJax 学习笔记二(onreadystatechange的作用)
AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...
- [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计
源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...
- JMX学习笔记(二)-Notification
Notification通知,也可理解为消息,有通知,必然有发送通知的广播,JMX这里采用了一种订阅的方式,类似于观察者模式,注册一个观察者到广播里,当有通知时,广播通过调用观察者,逐一通知. 这里写 ...
- java之jvm学习笔记二(类装载器的体系结构)
java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ...
- Java IO学习笔记二
Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...
- 《SQL必知必会》学习笔记二)
<SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语 ...
随机推荐
- 该用 QGraphicsView ? QtQuick-QML ?
目前QtQuick (2014/3/6) 已经发展了有一段时间了,很多人在用因此我也想看看是否适合我目前的项目. 我要做的是一个类似3DMax中的材质编辑器的东西,里面有成千上万的”表单“(不知道怎么 ...
- Mac系统下显示和隐藏文件
在配置Maven的时候需要更改.m2文件,所以要将.m2显示出来,记录一下方便日后使用. 显示文件:在终端输入defaults write com.apple.finder AppleShowAllF ...
- git中常用命令小结
提交过程 查看文件改动以及新增的文件 git status 添加新增文件 git add your_file_path // 添加全部文件 git add * // 添加某类型文件 提交文件 git ...
- django_cms安装技巧
首先python的版本要高一些,否则安装django-cms会报错 安装cmsinstaller不能够正常下载 利用virtualenv进行安装配置 注意中文的配置 djangocms配置中文 dja ...
- App开发(Android与php接口)之:短信验证码
最近和同学们一起开发一个自主项目,要用到短信验证码,在网上搜索了很久,看到一个推荐贴,提到了很多不错的短信服务商.经过测试,帖子中提到的服务商他们的短信到达率和到达速度也都不错.最后,由于经费问题,我 ...
- window.onload和window.onscroll
之前我的一个页面里写了引入了2个js,一个是包含置顶的侧面客服,一个是定位导航.2个开始都用了window.onload,发现第一个js的定位导航没有显示,被第2个js覆盖了,当我去掉第2个js的wi ...
- [地图SkyLine二次开发]框架(5)完结篇
上节讲到,将菜单悬浮到地图上面,而且任何操作都不会让地图把菜单盖住. 这节带大家,具体开发一个简单的功能,来了进一步了解,这个框架. 1.想菜单中添加按钮 -上节定义的mainLayout.js文件里 ...
- 理解tcp协议的3次握手和面向连接
1.tcp是有连接的, 这个不是说他有个实际的连接,这个是个虚拟的连接,连接的保持信息不是由连接的路线来保存的,他是由连接的两方来保存其状态信息,这就是面向连接的, 2.tcp要3次握手: 客户端发给 ...
- navicat 快捷键
1.ctrl+q 打开查询窗口 2.ctrl+/ 注释sql语句 3.ctrl+shift +/ 解除注释 4.ctrl+r 运行查询窗 ...
- Ubuntu16.04安装Samba
在新装的ubuntu16.04下安装samba. 安装好samba后备份下配置文件: zhuben@zb:~$ sudo apt-get install samba zhuben@zb:~$ cd / ...