09Flappy Birds项目

项目结果演示##

结果演示
要达到的功能简介:
1、无尽模式。。。。玩家只要不能满足游戏规则。就可以一直玩下去。
2、可以实现闯关积分。
3、地形管道的随机生成。
4、游戏主角的碰撞检测。
5、背景及相关音乐的播放。
6、整个游戏结束后的相关处理,当前分数,最好分数的处理,及从新开始。

一、相关素材的准备工作##

导入素材结果
素材导入
图片的格式为true color保持图片的原始状态。不失帧。
图片格式的选择
相机的选择:有2种透视视角和正交视角。这里选择的是正交视角。整个游戏在3D环境中开发。
视角选择
游戏的载体:Quad这是一个面片。只会显示一面。
游戏载体的选择

二、游戏背景搭建##

1、材质球的选择:在这里选择如下图所示。这里扩充对Shader的学习了解。这里加大了Quad的Scale便于开发。
材质球的选择
2、地面back的创建:与背景一样只是图片不一样。从新创建了一个Quad 面片。在这里要了解。父物体与子物体之间的大小,相对位置之间的关系。
back的创建
结果演示
3、pipe的创建:需要成对出现。我们要考虑上下管道的距离,在创建一个Quad,里面是pipe图片。
pipe不可以过大,不然会把整个给覆盖掉。
一个面片上出现几对管道。这个不是我们考虑,需要有人对着个进行策划。
还要注意pipe在z轴上的关系,避免出错。就是管道在bg前面,在back后面。
pipe的创建
4、一个简单的面片创建好了,我们可以通过脚本进行整个游戏地图的移动,从而实现无尽模式。
下面进行主角,我们小鸟的创建了。
首先是创建一个Quad面片,把小鸟的Aphal通道图片贴到材质球上。但是有三个小鸟,那我们要进行处理。
通过控制Tiling和Offset属性显示为一张图片。并通过脚本控制小鸟运行时的上下摆动。
                                             
主角小鸟的控制
代码逻辑控制
5、管道的随机生成。注意在整个back上的上下距离(需要有人专门做测试)。
管道效果展示
随机生成代码
6、给小鸟主角添加钢体组件,并且水平有一个移动速度。可以实现小鸟的一直飞行效果。
效果展示
对应代码
7、给小鸟,地面,管道添加碰撞器。对小鸟的旋转只能在z轴上旋转,只能在x上移动。
碰撞器的大小选着合理。
小鸟的碰撞器及旋转运动逻辑
管道碰撞器的大小逻辑
地面的碰撞器
8、背景的移动,第一个背景过完之后,把第一个背景生成到最后一个。这样就可实现无尽模式了。
实现处理,找一个合适的触发器,在摄像机看不到当前背景时。实现此功能。
触发器的添加。。。添加到哪里才合适。。。要考虑。。。

单列模式的运用(游戏管理器)

单列模式
触发器的位置
背景的移动脚本控制
9、小鸟的水平移动控制。做好场景之后我们需要控制主角的行走了。主角在水平的速度需要特定的(有人策划)。
但我们按下鼠标左键的时候小鸟需要一个向上的速度。
小鸟的水平移动
代码控制水平移动
按下鼠标左键给一个向上的速度代码
10、摄像机跟随小鸟(主角)。这里用的是第一人称视角。
摄像机和小鸟的位置关系
11、分数控制。对分数进行控制。当小鸟闯过一堆管道的时候,我们就需要显示分数加一分。
我们需要在一对管道的中间增加一个触发器。用来判断小鸟有没有通过这个管道。
ui显示分数
触发器的添加
分数控制
UI
12、游戏状态控制:游戏开始状态,游戏进行状态,游戏结束状态。
游戏开始状态,不能让小鸟播放动画,不能跳跃。游戏进行时,这些状态可以实施。
游戏开始状态
游戏的三种状态
游戏开始状态转换游戏进行状态
游戏进行时获得的状态效果
13、游戏结束状态控制。游戏在碰到地面,碰到管道的时候,游戏就要结束了。
(只有游戏处于进行状态的时候,才会有游戏动画效果,和鼠标左键按下的时候施加一个向上的力)
对小鸟进行一个碰撞检测就行,如果碰撞的是管道或者地面就把游戏状态设置为游戏结束状态。

效果展示
碰到管道进行检测代码
碰到地面进行检测代码
还有个问题,我们游戏运行时让摄像机的照射范围处在场景中。需要对那个摄像机的y轴进行限制。
效果演示
代码控制演示

三、声音的添加,游戏记录的显示###

1、没有声音的游戏算游戏吗?从这句话我们可以看出声音的重要性。我们要学会控制在哪里进行声音的播发。声音的植入。
声音的添加
2、游戏记录面板的设定:在这些逻辑可以实施后,我们要对游戏进行一个后处理。玩家结束游戏之后。
我们需要显示出一个面板用来控制当前的分数,及最好的历史记录。
效果展示
            用UGUI做一个控制显示分数的面板.
控制面板所用的内容详解
               通过代码对分数的实施控制.
首先明确,这个面板必须在游戏状态结束的时候才会显示出来,当游戏状态处于结束状态时,我们必须把玩家获取的分数穿过来显示在UI面板上.
游戏结束状态调用的函数
控制分数的单列模式的运用(单列模式很重要).
UI与代码控制的相联系.
 public static GameMenu _instance;
    public Text nowScore;
    public  Text  highScore;
    public Image starting;

    void Awake()
    {
        _instance = this;
        gameObject.SetActive(false);
    }

    public void UpdateScore(float nowScore)
    {
        float highScore=PlayerPrefs.GetFloat("score",0);

        if (nowScore > highScore)
        {
            highScore = nowScore;
        }

        PlayerPrefs.SetFloat("score",highScore);
        print("123");
        this.nowScore.text = nowScore+"";
        this.highScore.text=highScore+"";
    //    if (Input.GetMouseButtonDown(0) && GameManager._intance.GameState == GameManager.GAMESTATE_END)
    //    {
    //        Rect rect=
    //    }
         }
   
按钮事件的重新开始.游戏结束的时候我们通过从新开始按钮发生点击的时候.
把游戏重新加载这个场景.用到SceneManager.LoadScene方法加载场景.
   public  void AgainGame()
    {
        SceneManager.LoadScene(0);
        //Application.LoadLevel(0);
    }
按钮点击事件

项目总结###

在这里Flapppy Birds项目就告一段落了.想想我们在这个项目里面有哪些比较重要的东西.

1.明确Shader这一方面的重要性.现在我们只是用到了其中的一个反面.还有那么多方面我们要去认真研究Shaer.
2.明确帧与Time类中的东西的关系.这样写代码的时候才不会不找边际.
3.摄像机跟随Bird用了第三人称视角.那我们要了解第一人称视角与第三人称视角.
4.PlayerPrefs用来的用法.相当于一个仓库.把我们需要的东西承储好,用的时候在拿过来用.
5.在以后的多场景游戏当中我们要通过SceneManager.LoadScene来加载场景.
6.在这个小游戏当中,我们就多次用到了单列模式,明确单列模式的用法,意义.(一个静态构造函数,在本类中可以通过,类名.(成员)获取信息,在非本类中通过类名.单列.成员名获取.保证了信息的一份性,不可new()多分.单列的意义)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容