因为有一个超屌的梦想,所以就绝不会做一个孬种的追梦人!

本章节主要目的:

  • 实现小鸟的飞行。
  • 实现管道的随机出现。
  • 实现相机跟随。

上次主要是场景的布置,这节全力拿下代码。

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的学习笔记(二)的更多相关文章

  1. Flapper Bird的学习笔记(一)

    因为我有一个超屌的梦想,所以就绝不做孬种的追梦人! 本文主要目的是为了实现Flapper Bird的功能. 另外一个目的是为了加强对Unity引擎的理解和掌握. 新人一枚,如若看到是我幸运.若是发现错 ...

  2. Flapper Bird的学习笔记(三)

    因为我有一个超屌的梦想,所以就绝不会做一个孬种的追梦人! 完成音效的添加 单例模式 游戏的状态切换 1. 单例模式 首先呢,说一下单例模式.何为单例?单例模式是一种常用的软件设计模式.在它的核心结构中 ...

  3. WPF的Binding学习笔记(二)

    原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...

  4. AJax 学习笔记二(onreadystatechange的作用)

    AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...

  5. [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计

    源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...

  6. JMX学习笔记(二)-Notification

    Notification通知,也可理解为消息,有通知,必然有发送通知的广播,JMX这里采用了一种订阅的方式,类似于观察者模式,注册一个观察者到广播里,当有通知时,广播通过调用观察者,逐一通知. 这里写 ...

  7. java之jvm学习笔记二(类装载器的体系结构)

    java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ...

  8. Java IO学习笔记二

    Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...

  9. 《SQL必知必会》学习笔记二)

    <SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语 ...

随机推荐

  1. Magnifier笔记

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  2. GOLANG SDK下载

    如果没有FQ的话是不能访问国外网站的,但是golang提供了中国站点,要下载sdk可以在中国站点下载 中国站点: http://www.golangtc.com/download

  3. [QT学习]拷贝文件

    sourceDir源绝对路径,toDir目标绝对路径 //拷贝文件: bool FileOperation::copyFileToPath(QString sourceDir ,QString toD ...

  4. UI进阶 跳转系统设置相关界面的方法

    跳转系统设置界面,例如提示用户打开定位.蓝牙或者WIFI,提醒用户打开推送或者位置权限等 在iOS6之后,第三方应用需要跳转系统设置界面,需要在URL type中添加一个prefs值,如下图: 跳转系 ...

  5. gravity与layout_gravity的区别

    android:gravivty 控件的内容显示位置 android:layout_gravity 控件在屏幕的布局位置,相对于容器或者父控件的位置

  6. JS作用域及call

    <script type="text/javascript"> function log(val){ console.log(val); } function base ...

  7. Grunt_1从安装开始创建一个基本的Grunt

    Grunt的介绍:http://www.gruntjs.net/getting-started 文件架构:https://github.com/zhangsai521314/Grunt 1:安装Git ...

  8. windows PHONE 开发-入门程序构筑

    1:页面的扩展名为:.xaml文件类似于ASPX一样可以编写客户端显示内容和后台处理内容 一般的前台页面的形式为: <Page x:Class="MyFirstApp.MainPage ...

  9. DG的Switchover切换

    用户可以使用角色管理服务,进行主.备库的计划中的角色切换,这个叫switchover,或者是非计划中的角色切换,叫failover. 目的:实现主库(orcl)和从库(standby)的切换 主库参数 ...

  10. ubuntu14.04 Hadoop单机开发环境搭建MapReduce项目

    Hadoop官网:http://hadoop.apache.org/ 目前最新的版本是Hadoop 3.0.0-alpha1前提:java 1.6 版本以上 首先从官网下载压缩包(hadoop-3.0 ...