unity3d开发flappy bird之背景设计(一)
2015-10-24 00:12
344 查看
我记得上一年有一个很热的游戏叫“flappy bird”,这款游戏曾风靡全球。游戏虽小,但难度极高,紧紧抓住了玩家那种求胜通关的欲望,而吸引了更多玩家去挑战难度,真正做到了游戏的精致程度。万万没想到这款游戏的开发到完成仅仅需要4小时,我的天啊,我花了差不多一个晚上才完成了背景的设计和小鸟动画的播放。这就说明了游戏的可玩性并不是用画质和炒作来衡量的。而是游戏的设计模式决定游戏的质量。
好吧进入正题,unity3d不仅仅能开发3D游戏,而且还能做2D游戏。心血来潮,就试试去做呗。我们新建一个3D工程去做2D游戏(并无影响),进入工程第一件事情就是把Main Camera的Projection设置为Orthographic(摄像机的2D投影模式)。然后在Build Setting中选中Android(毕竟做手游)进行Switch Platform,然后就可以在Game视图中根据自己的情况尽情设置游戏的分辨率了。
![](http://img.blog.csdn.net/20151024005018807)
![](http://img.blog.csdn.net/20151024005035845)
![](http://img.blog.csdn.net/20151024005045895)
首先我们创建背景,顾名思义就是添加背景图片。创建一个Quad,这是个单平面模型,我们可以为此添加材质球背景图片,添加完成之后。背景(bg)Reset一下,调整好其适应的屏幕大小和位置。注意:创建的Quad我们不会用到Mesh Collider组件,可以将其删除;图片的Texture Type改为Editor GUI模式;材质球的Shader也改为Unlit / Transparent模式,以后创建材质球图片也是这样设置。这里我已经把一个背景大体设置好了,注意为了让水管(pipe),小鸟(bird),地面(back)能显示在背景(bg)的前面,不与之重叠显示,需要把它们的Position.Z设置为-1。
![](http://img.blog.csdn.net/20151024121333103?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
好下面用脚本来播放小鸟的飞行动画帧,先来了解材质球的显示原理。我们添加材质球的默认显示是这样的
![](http://img.blog.csdn.net/20151024121741507)
,然后更改材质球的Tiling.X=0.125,这个数值的计算公式是:1
/ 图片动画帧 = 1 / 8 = 0.125。
![](http://img.blog.csdn.net/20151024121719531)
这样图片就从第一帧开始显示,效果图:
![](http://img.blog.csdn.net/20151024122253606)
现在就可以用脚本来控制小鸟的动画播放了。
好吧进入正题,unity3d不仅仅能开发3D游戏,而且还能做2D游戏。心血来潮,就试试去做呗。我们新建一个3D工程去做2D游戏(并无影响),进入工程第一件事情就是把Main Camera的Projection设置为Orthographic(摄像机的2D投影模式)。然后在Build Setting中选中Android(毕竟做手游)进行Switch Platform,然后就可以在Game视图中根据自己的情况尽情设置游戏的分辨率了。
首先我们创建背景,顾名思义就是添加背景图片。创建一个Quad,这是个单平面模型,我们可以为此添加材质球背景图片,添加完成之后。背景(bg)Reset一下,调整好其适应的屏幕大小和位置。注意:创建的Quad我们不会用到Mesh Collider组件,可以将其删除;图片的Texture Type改为Editor GUI模式;材质球的Shader也改为Unlit / Transparent模式,以后创建材质球图片也是这样设置。这里我已经把一个背景大体设置好了,注意为了让水管(pipe),小鸟(bird),地面(back)能显示在背景(bg)的前面,不与之重叠显示,需要把它们的Position.Z设置为-1。
好下面用脚本来播放小鸟的飞行动画帧,先来了解材质球的显示原理。我们添加材质球的默认显示是这样的
,然后更改材质球的Tiling.X=0.125,这个数值的计算公式是:1
/ 图片动画帧 = 1 / 8 = 0.125。
这样图片就从第一帧开始显示,效果图:
现在就可以用脚本来控制小鸟的动画播放了。
<span style="font-size:14px;">using UnityEngine; using System.Collections; public class Bird : MonoBehaviour { public int frameCount=0;//计算当前第几帧 public int frameNumber=10;//定义每秒10帧 public float timer;//计算帧数 // Use this for initialization void Start () { } // Update is called once per frame void Update () { timer += Time.deltaTime; //1帧所用时间为1/10S if (timer >= 1.0f / frameNumber) { frameCount++; timer-=1.0f / frameNumber; int frameIndex=frameCount%8;//动画一共8帧 //this.material//.renderer //利用材质的SetTextureOffset方法播放动画帧 this.gameObject.GetComponent<MeshRenderer>().material.SetTextureOffset("_MainTex",new Vector2(0.125f*frameIndex,0)); } } }</span>运行效果
相关文章推荐
- Kinect结合Unity3D引擎开发体感游戏(一)
- c#调用COM组件
- C#实现把指定数据写入串口
- C#动态创建button的方法
- C#中抽象方法与虚拟方法的区别
- c#中虚函数的相关使用方法
- C#使用加边法计算行列式的值
- C#实现多线程的同步方法实例分析
- C#中尾递归的使用、优化及编译器优化
- C#实现子窗体与父窗体通信方法实例总结
- C#通用邮件发送类分享
- C#中this的用法集锦
- C#.NET获取拨号连接的宽带连接方法
- C#异步绑定数据实现方法
- C#实现AddRange为数组添加多个元素的方法
- C#中Equality和Identity浅析
- C#生成饼形图及添加文字说明实例代码
- C#判等对象是否相等的方法汇总
- C#简单的向量用法实例教程