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查询,即从单个数据库表中检索数据的单条语 ...
随机推荐
- xfs磁盘(文件)碎片查看和整理
网上有些帖子说XFS不用做碎片整理,其实是错误的.XFS用延迟写入等技术确实可以减少碎片的出现,但是如果服务器用了几年,并且文件操作比较频繁,还是会出现碎片的,应该整理.注意:在Debian中XFS相 ...
- dir、help查询
#!/usr/bin/env python li = [] print(dir(li)) help(list)
- mysql服务器和配置优化
一.存储引擎 mysql中有多种存储引擎,一般常见的有三种: MyIsam InnoDB Memory 用途 快读 完整的事务支持 内存数据 锁 全表锁定 多种隔离级别的行锁 全表锁定 持久性 基 ...
- MySQL基本数据类型
MySQL数据类型包括:整型.浮点型.日期类型.字符型,这里用表格的方式详细说明每个数据类型,这些只要记住常用的即可,需要再查阅. 整型 数据类型 存储范围 字节 TINYINT 有符号值:-128 ...
- 【Android】解决新建的xml文件无法正常加载的问题
新建一个xml布局文件,如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xm ...
- RealSense开发-搭建C#开发环境
一.前言 RealSense的开发环境主要包括如下几部分: 硬件:RealSense摄像头(此处以SR300为例)+搭载Intel酷睿6代处理器的PC机(其实4代处理器也能跑起来): 软件:Windo ...
- Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
本文对Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法进行了详细的总结,需要的朋友可以参考下,希望对大家有所帮助. 详细解读Jquery各Ajax函数: ...
- 分布式消息队列 Kafka
分布式消息队列 Kafka 2016-02-25 杜亦舒 Kafka是一个高吞吐量的.分布式的消息系统,由Linkedin开发,开发语言为scala具有高吞吐.可扩展.分布式等特点 适用场景 活动数据 ...
- 从github获取代码
以duilib为例: 1 建立一个文件夹,右键 git bash here. 2 git init 3 git clone https://github.com/duilib/duilib.git
- SSIS数据转换后数值总数差异过大
之前做过一个项目,犯了一个小错误,写出来给大家分享一下,以防大家出同样的错误. 做了一个ETL包,对货品的销售额进行数据转换,字符型 --〉 浮点型: 之后对销售额进行求和,在测试数据结果时发现与销售 ...