Skip to content

Mistariano/flappy-bird-demo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Flappy Bird Demo

大家好,我是新来的狼人。

听说MSC的巨佬们要开始学习Unity了,为了庆祝我今晚花了点时间写了个简单的Demo :)

这是一个非常经典的游戏:Flappy Bird。虽然我知道大家都想学3D游戏,但是如果你会写2D游戏并且学好了线性代数 ,那么3D游戏其实也就没有什么了(迫真)

项目演示地址:http://flappy.mistariano.com/

这是我的个人服务器,求爸爸们别ddos我orz

Flappy Bird大家基本都玩过把……操作很简单,空格飞翔:)

暂时不支持移动端,请用PC浏览器打开,要不然你把手指戳骨折我不负责:(


如果您是巨佬,已经对Unity很熟悉了,那么这个项目就当是抛砖引玉和简单的交流学习吧:)

如果您是萌新,觉得一开始面对一大堆项目文件和陌生的C#代码无从下手,那么没关系,我简单安排了几个小任务,你可以一边尝试解决它们,一边熟悉这个小项目

安装与运行

下载

熟悉git的同学可以直接clone到本地

萌新请猛敲这个网页右上角那个绿色的Clone or download按钮,选择Download ZIP,下载ZIP压缩包再解压即可

开发环境与准备工作

  • 自行百度Unity并注册账号,然后下载最新版。对于大部分人来说,您是学生,只用得起免费的个人版,所以选个人版下载安装即可。注意这个项目基于Unity 2018.2.15这个版本构建,老版本Unity可能会遇到兼容性问题。
  • 选择一款顺手的编辑器 / IDE。你可以用自带的Mono,也可以用Visual Studio,也可以用Visual Studio Code,我个人推荐后两个。尤其是VSC,比VS轻多了(因为本体就是个编辑器……),如果你只是想写Unity而不想碰.Net,可以选择VSC
  • 简单熟悉一下Unity的界面,我觉得还是蛮漂亮 / 直观的,好耶!
  • Have fun :)

使用Unity打开项目

打开Unity,一开始会问你是不是个人用户、有没有收入Blabla,选你现在没有收入就好

然后进入我也不知道学名叫什么的一个项目资源管理界面,由于你什么都没做过所以应该空空如也,右上角点击Open,选中下载的项目文件夹,然后点选择文件夹即可,不出意外的话等短暂的加载完成后就能看到Unity界面。现在可以开始魔改了

如果你是萌新,更改源码前建议你先备份,谁都会犯错,我们要想办法把错误的代价降到最低:)

项目结构

自己看

对于新手来说,一开始不需要掌握所有项目文件(而且我昨晚忘了配好.gitignore导致一大坨没用的东西全被扔进去了orz)

只需要知道所有我们自己造的轮子都放在了Assets这个文件夹里面

Assets里面包含四个文件夹:

Assets
├─Img
├─Prefab
├─Scenes
└─Src

其中C#脚本源码全部被我放在了Assets/Src里。C#的源码都是.cs文件,而.meta文件是Unity生成的一些索引信息,我们可以不去管它们

Assets/Scenes顾名思义存放场景文件,对于这个Demo项目来说只有一个Main

Assets/Img存放图片资源

Assets/Prefab存放我们做好的Unity预设(Prefab)资源文件。如果你还不熟悉Unity你可以先不去管它们

学习Unity引擎的简要说明

  • 没有什么比文档更清晰的了
  • “游戏”的本质是一个不断循环的程序,不停地渲染游戏画面(我们称每个画面为一帧)。Unity作为一个游戏引擎,允许我们在渲染的不同环节(更准确地说说,生命周期)定义一些我们自己需要的操作。
  • 下面是王八念经:我们会构造场景Scene。场景里有游戏对象GameObject,比如一个人,一只狗,它们都是GameObject。每个GameObject会挂载若干组件Component,每个Component定义这个GameObject一些特点,比如它可能需要物理引擎的支持,是个刚体,那么它就需要被我们挂上Rigidbody这个Component。除了Unity自带的很多Component,最重要的一类Component是我们自己编写的脚本Script。我们的脚本定义挂载它的对象在引擎生命周期的各阶段(比如Start、Update)的行为。
  • 上面那一坨不需要看懂,你可以找个时间跟着官网教程自己做一个简单的Demo,学起来其实很快的
  • 关于坐标:3D游戏默认z轴正方向是前方,y轴正方向是上方,x轴正方向是右方。2D游戏默认x、y轴对应水平、竖直。这很重要,记住它们,然后学好线性代数(或高等代数)
  • C#基本语法也要看一看,当然你还不需要理解太高深的概念,比如OOP
  • 当然你要是会OOP岂不是更好:)

这个游戏项目中的几项任务

  1. 完善Bird.cs脚本内的getDirection方法
  2. 完善GameMgr.cs脚本内的getNewPipYList方法
  3. 想办法让鸟在飞出屏幕后游戏结束。这是很简单的,留作思考。
  4. 你可能发现了,我记录了一局游戏得分但并没有显示它。你可以尝试使用某些方法,将分数显示在屏幕上。这是有点不简单的,留作更深入的思考。

代码里面已经注释了这两个方法是干啥的,以及我还希望你干点啥,我比较懒所以这里就不复述了:)

除此之外也有很多可以做的事情。比如在GlobalConfig.cs里面调调参,甚至改一改某些代码逻辑(比如,按下空格键后给鸟一个持续的上升速度,让它的运动轨迹不再是抛物线)。这个游戏难度太鬼畜了不是么,我自己最多只能打到9分,所以调整游戏难度,让它既没有现在这样难,也不会过于简单到无聊,是一件很有意思也很有意义的事情

最后

我希望想选我做队长的同学尽量在这周六决定分组前完成上面这些任务中的前两项

因为作为大二狗我这学期真的很忙orz……我真的真的不想打击大家的热情,也不想打击我自己的热情,所以如果迫不得已需要选择,我可能更倾向和生存能力更强的同学一起组队orz

但是我知道大部分大一同学很忙,所以如果实在做不了也不要强求。这不是考核,我只是想先和大家交流一波思想:)

完成的代码可以发我邮箱[email protected],只发相关的.cs文件就可以

当然,如果你还完成了第4项任务,或者对游戏做了其他方面的改进,也欢迎你把全部项目文件打包发我:)


相比编程,游戏开发更注重天才的想法

所以即使你对上面那些编码一窍不通也没关系,如果有什么有趣的想法也可以发我,可以关于是这个游戏的,可以是关于这学期要做的游戏(坦克大战),也可以是有关的一切内容:)

About

This is a demo for Unity3D

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages