版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、©安鼠珏工犬爭AHL【IIMVEKSH Y WSCIENCE & TECHNOIXHtY移动终端游戏开发课程设计说明书题目:Flappy Bird游戏设计院 系:专业班级:学 号:学生某:指导教师:2016年6月30日某理工大学课程设计论文任务书学院学号学生某专业班级设计题目Flappy Bird游戏设计设计 技 术参 数系统平台:Win dows 7开发工具:Unity、MonoDevelop开发语言:C#设 计 要 求1能够统计分数,并记录以往最高分2管道出现具有随机性3界面合理、友好工作量课程设计报告4945字源程序314行工作计划2016.04.15-04.22根据课
2、程设计的要求,查找相关资料,完成需求分析;2016.04.23-05.07进展系统的概要设计;2016.05.08-06.12进展系统的详细设计和源代码的书写;2016.06.13-06.30对系统进展调试分析,撰写课程设计报告。参1严蔚敏,吴伟民.数据构造.:清华大学,2011考2立波.C#入门经典.:清华大学,2006资料3金玺曾.Unity3D手机游戏开发:清华大学,20134u ni ty.taiker.指导教师签字教研室主任签字2016年4月1日某理工大学课程设计论文成绩评定表学生某:学号:专业班级:课程设计题目:Flappy Bird游戏设计评价 单元评价要素评价内涵优良中差知识
3、水平30%文献查阅与 知识运用能力20 分能独立查阅文献资料,并能合理 地运用到程序设计训练之中;能 将所学课程专业知识准确地运 用到程序设计之中,并归纳总结 本程序设计训练所涉及的有关课程知识程序设计方案10 分程序设计整体思路清晰,程序设计方案合理可行设计表现50%工作量(10分)课程设计工作量饱满设计态度10 分设计态度认真,遵守程序设计阶 段的纪律,作风严谨,能按时完 成设计任务书中规定的任务,按 时上交课程设计有关资料实际动手能力20 分实际动力能力强,能独立完成相关设计任务创新能力(10分)有一疋的创新能力说明 书质量20%写作水平(10分)整体思路清晰,构造合理,层次清 楚,语言
4、表达流畅,综合概括能力 强写作规X(10分)符合课程设计说明书的根本要 求,用语、格式、图表、数据及 各种资料引用规X符合标准成绩:指导教师:年月日目录1 需求分析 12 概要设计 12.1 设计思路 12.2 存储构造设计 22.3 功能模块设计 33 详细设计 33.1 游戏工程视图 33.2 游戏界面布局 53.3 功能模块设计实现 6游戏开场设计 6小鸟移动模块设计 7管道碰撞模块设计 8场景延续模块设计 8分数统计模块设计 8游戏完毕模块设计 93.4 其他设计实现 10摄像机的跟随 103.4.2 游戏音效的添加 113.4.3 游戏开场界面的设计 114 运行与测试 125 总结
5、 15参考文献 151 需求分析1. 技术需求:此游戏是在 上开发出来的,可以支持2D、3D场景的 编辑,本游戏是基于 3D 场景开发的。 游戏中的脚本语言使用的是 C#, 中的Mo nodevelop为脚本编辑提供了平台。2. 功能需求:Flappy Bird是一款益智类的小游戏,其玩法为:游戏开场后,玩家需间歇性 的点击鼠标,让小鸟向上飞,不会掉下来,并且要穿过随机出现的管道的间隙, 不能碰到管道,碰到就游戏完毕, 穿过一个管道就可以得到一分。 其制作包括对 以下六大功能的需求: 1当开场游戏后,玩家需要单击指定位置才能开场游戏,否那么无法开场; 2需要通过点击屏幕来控制小鸟的位置,完成使
6、小鸟上下移动的功能; 3需要对小鸟是否碰到地面或者管道进展判断,从而决定游戏是否完毕; 4需要设置触发器以实现场景的延续,当小鸟碰到触发器,场景中的第一幅 背景便挪到最后一幅的后面,从而实现视觉上场景不断出现的效果; 5需要对玩家进展记分,并对最高分进展判断和存储; 6在失败后,需要使玩家通过点击按钮重新开场游戏。2 概要设计2.1 设计思路Flappy Bird 是一款形式简易但难度极高的休闲游戏,我们打算使用unity 开发工具来制作这款游戏。经过分析, 我们首先要完成的是对素材的收集, 我们可 以从网上搜索下载,也可以自己使用 PS等工具来画。其次,我们需要对整个游 戏进展模块划分,理清
7、整个游戏是由哪几个模块组成的,经过讨论分析, 我们得 出这个游戏共需要六大模块。分析完之后,便进入了正式的游戏制作环节, 我们 需要对各个模块进展详细设计, 其中包括页面布局、 碰撞检测、小鸟飞行动画等。 完成各个模块的详细设计后,我们便可以在 unity 中对它们进展组装和拼接,并 运行测试,修改错误和不适当的地方。自此,整个游戏就设计完成了。2.2 存储构造设计1. Pipe类:管道设计Float pos_y / 管道的 Y 轴值,目的是为了使管道能随机出现2. Bird 类:小鸟设计public float timer;/ 计时器,为了控制显示小鸟飞行动画public int frame
8、Number;/ 一秒的帧数public int frameCount;/ 帧计数器3. FollowBird 类:摄像机设计private GameObject bird;private Transform birdTransform;/bird 的位置4. GameMa nage类:游戏状态设计public static int GAMESTATE_MENU;/ 游戏菜单状态public static int GAMESTATE_PLAYING;/ 游戏中状态public static int GAMESTATE_END; / 游戏完毕状态public Transform firstBg;
9、/ 用来记录应该将第一幅场景挪到哪幅场景 的后 面,以实现场景延续public int score = 0;/ 记录分数5. MoveTrrigger类:触发器设计Transform currentBg;/ 用于当前场景的位置Pipepipe1;/ 用于新出现的场景中管道 1 的位置Pipepipe2;/ 用于新出现的场景中管道 2 的位置6. GameMe nu类:游戏完毕菜单设计public GUIText nowScore;/ 当前分数 public GUIText highScore;/ 历史最高分 public GUITexture startTexture;/ 开场按钮图片publ
10、ic GUITexture overTexture; / “Game Ovef 图片7. GameReady类:游戏开场菜单设计public GUITexture readyTexture;/ “GetReady 图片public GUITexture TopTexture;/“ TapTap 图片 public static GameReady _intance2;2.3功能模块设计Flappy Bird游戏具有六大功能模块,分别为:(1)游戏开场模块:包括游戏开场菜单的设计;(2)小鸟移动模块:包括对小鸟飞行进展控制的设计;(3)管道碰撞模块:包括管道碰撞和穿过管道即可得分的设计;(4)场
11、景延续模块:包括场景触发器的设计;(5)分数统计模块:包括对玩家分数的统计、显示和在游戏完毕时,对玩家的 分数进展判断的设计;(6)游戏完毕模块:包括游戏完毕菜单的设计;其功能模块图如图2-1所示:图2-1功能模块图3详细设计3.1游戏工程视图在新建工程后,我们需要在“ Assets'文件夹下导入素材“ Audios":游戏 音乐素材文件夹,包括游戏开场音乐、小鸟煽动翅膀的音乐、得分的音乐、撞到管道和地面的音乐、小鸟死亡的音乐;游戏背景、管道、小鸟、游戏菜单等。Textures":图片素材文件夹,包括:Audios"文件夹如图3-1所示:Assets Au
12、dios5fx_winfl冒 Es.di 唱sfx_h itoiirtifi-SW&osh.图3-1“Audios"文件夹“Textures"文件夹如图3-2所示:图 3-2“Textures"文件夹然后我们需要新建“ Materials":材质文件夹;“ Prefabs :预制文件夹;Seene§ :游戏场景文件夹;所示:“ Scripts'':脚本文件夹。总体工程视图如图3-3FavoritesAssets三 Audios Materials0 Prefabs"ScenesAssets Scripts= S
13、 cri pts言 Textures图3-3总体工程视图3.2游戏界面布局1.开场界面游戏开场界面如图3-4所示,左上角的“Score为分数,中间的图画为开场按钮, 单击“GetReady即可开场游戏,右边的管道为小鸟行进途中的障碍,当小鸟碰 到障碍,游戏便完毕,但当小鸟通过一个障碍即可得一分。图3-4开场界面2.完毕界面游戏完毕界面如图3-5所示,中间的为菜单栏,显示当轮游戏分数和历史最高分, 并根据分数来显示所得奖牌的种类,分为金牌、银牌、铜牌,我们可以单击“重 新开场按钮来重新开场游戏。图3-5完毕界面3.3功能模块设计实现 游戏开场设计游戏开场界面与游戏进展界面相似, 但一开场没有管道
14、,目的是为了给玩家 一个反响的时间。当程序检测到玩家在游戏界面内点击了鼠标, 那么就进入了游 戏进展界面。程序如下:public static int GAMESTATE_MENU=0;public static int GAMESTATE_PLAYING =1;public static int GAMESTATE_END=2;void Update () if (GameState =GameMa nager.GAMESTATE_MENU) if (In put.GetMouseButto nDow n (0) GameState = GAMESTATE_PLAYING; bird.Se
15、ndMessage ("getLife");public void getLife()Getp onen t<Rigidbody>().useGravity = true; this.Getpo nen t<Rigidbody>().velocity = new Vector3(3,0,0); 小鸟移动模块设计进入游戏进展界面后,小鸟会显示飞行的动画,在Unity中进展相关参数的设置后,我们需要通过代码来控制小鸟飞行动画,程序如下:if(GameMa nager._i nta nce.GameState=GameMa nager.GAMESTATE_
16、PLAYING) timer += Time.deltaTime;if (timer >= 1.0f / frameNumber) frameCo un t+;timer -= 1.0f / frameNumber;int frame In dex = frameCo unt % 3;this.Getpo nen t<Re nderer>().material.SetTextureOffset ("_Mai nTex", new Vector2(0. 333333f*frameI ndex,0);我们通过点击鼠标来控制小鸟进展移动,程序如下:if(Game
17、Ma nager._i nta nce.GameState= GameMa nager.GAMESTATE_PLAYING) if (In put.GetMouseButt on (0) /按下左键Getpo nen t<AudioSource>().PIay();Vector3 veI2 = this.Getp onen t<Rigidbody> ().velocity;this.Getp onen t<Rigidbody>().velocity=new Vector3(vel2.x,4,vel2.z);管道碰撞模块设计当小鸟碰撞到管道, 游戏便完毕,此时
18、我们便不能再控制小鸟进展移动, 管道 碰撞程序如下:void OnCollisionEnter(Collision other)= "Player") hitMusic.Play ();dieMusic.Play ();场景延续模块设计当小鸟在飞行过程中, 后面的场景应该是不断更新的, 我们需要在第三个场景中 设置一个触发器, 当小鸟碰撞到这个触发器后, 我们便把第一个场景挪到最后面, 这样我们的场景就能一直不断的更新,程序如下: public void OnTriggerEnter(Collider other)print ("OnTriggerEnter&qu
19、ot;);if(other.tag="Player")currentBg.position = = currentBg;/ 管道的新位置pipe1.RandomGeneratePosition();pipe2.RandomGeneratePosition();分数统计模块设计当小鸟通过管道后,分数便会加 1,所以我们需要在管道中间设置一个触发器, 并使用代码控制小鸟在碰到触发器后分数能加 1,同时显示分数,程序如下: void OnTriggerExit(Collider other)if (other.tag = "Player") Getpo nen
20、 t<AudioSource>().PIay ();GameMa nager._i ntan ce.score+;/分数void On GUI()GUILayout丄 abel ("Score:" + GameMa nager._i ntan ce.score); 游戏完毕时,将显示本轮分数和历史最高分,代码如下:if (GameState = GameMa nager.GAMESTATE_END) GameMe nu._intan ce.UpdateScore (score); 游戏完毕模块设计当小鸟碰撞到管道或者地面时,游戏便会完毕,此时显示游戏完毕画面,同
21、时显示本轮分数和历史最高分,并根据分数来显示所得奖牌种类,同时有重新开场按钮,点击即可重新开场游戏,此为无限循环过程。代码如下:void Awake()_intance = this;public void UpdateScore(float no wScore)float highScore = PlayerPrefs.GetFloat ("score ",o);if(no wScore > highScore) highScore = no wScore;int a;a= in t.Parse (no wScore.ToStri ng ();if(a > 0
22、 && a < 10|a=0) ModelMenu.if(a > 10 && a< 30 | a =10) if(a > 30 | a =30) PlayerPrefs.SetFloat ("score", highScore);= nowScore+""+""= GameM anager.GAMESTATE_END) / 重新开场游戏Rect rect = startTexture.GetScreenRect ();Vector3 mousePos = Input.mouseP
23、osition;if (mousePos.x > rect.x &&mousePos.x < (rect.x + rect.width) &&mousePos.y > rect.y &&mousePos.y < (rect.y + rect.height) Application.LoadLevel (0);3.4 其他设计实现3.4.1 摄像机的跟随在游戏过程中,如果没有处理好摄像机的跟随,游戏就会一直显示一个界面, 这显然是与游戏要求不符的, 所以我们需要将摄像机赋到小鸟的身上, 并使用代 码来控制摄像机,程序如下:
24、private GameObject bird;private Transform birdTransform;void Start () bird = GameObject.FindGameObjectWithTag("Player"); birdTransform = bird.transform;void Update () Vector3 birdPos = birdTransform.position;float y = birdPos.y - 3.98f;if (y > 2.3f) y = 2.3f;if (y < -2.1f) y = -2.1f;
25、= new Vector3(birdPos.x+4.34f,y,birdPos.z-5.1f);3.4.2 游戏音效的添加一个游戏如果没有音乐效果那肯定是平淡无味的,添加了游戏音效后,会让 整个游戏更加生动形象,在这个游戏中, 我们在导入了音乐素材之后, 再给需要 添加音乐效果的地方添加“ Audio Source组件,并把对应的音乐添加进去即可, 以撞到管道为例播放音乐的代码如下:public AudioSource hitMusic;void update()hitMusic.Play ();3.4.3 游戏开场界面的设计进入游戏后,我们需要单击“ GetReady来开场游戏,程序如下:v
26、oid Awake ()_intance2 = this;void Update ()if (GameState =GameManager.GAMESTATE_MENU) if (Input.GetMouseButtonDown (0)&&mousePos.x > rect.x &&mousePos.x < (rect.x + rect.width) &&mousePos.y > rect.y &&mousePos.y < (rect.y + rect.height) GameState = GAMESTA
27、TE_PLAYING; bird.Se ndMessage ("getLife");4运行与测试1.我们运行游戏,进入游戏界面。一开场出现一个静止不动的画面,我们需要单 击“ Get Ready "来开场游戏,游戏开场界面如图 4-1所示:图4-1游戏开场界面2当开场游戏后,我们需要间歇性点击鼠标来控制小鸟向上飞行,每次点击只会 让小鸟获得一次速度,接着就会在重力的作用下向下落,如果接触到地面或者触 碰到管道,游戏就会完毕。经过测试,我们可以开场游戏并能控制小鸟进展飞行, 游戏进展界面如图4-2所示:图4-2游戏进展界面3当我们触碰到管道时,我们便失去对小鸟的控制,弹出游戏完毕菜单,我们可 以在菜单中看到自己此轮的分数、 历史最高分和所得奖牌种类,并选择是否继续 游戏。经过测试,当小鸟触碰到
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 3.7 声音的传播 课件(共23张) 小学科学教科版四年级上册
- GB6441-2025事故类型专项培训-可燃气体爆炸
- 全国交通安全日校园教育课件
- 2026年秋季中小学生合理膳食与体重管理课件:运动与饮食的黄金搭配
- 四川省巴中市巴州区2025-2026学年八年级上学期11月期中语文试卷(含答案)
- 2026年秋儿童青少年营养与健康科普课件:告别“小胖墩”守护儿童健康
- 登革热的急诊处理
- 2026年全新思维测试题及答案
- 2026年侏儒矮子测试题及答案
- 2026年母爱名言测试题及答案
- 部编版道法新教材四年级年级上册第一课第二课时《与班集体共成长、维护我们的班集体》教案
- 2026交投集团所属辽宁省高速公路运营管理有限责任公司操作岗招聘30人考试备考试题及答案详解
- 第十九届D2终端技术大会:淘宝 Weex 跨多端业务高效交付实践
- (正式版)HG∕T 20644-2024 弹簧支吊架选用标准
- DL-T 1476-2023 电力安全工器具预防性试验规程
- 部编版三年级上册语文全册
- 第二届全国乡村振兴职业技能大赛海南选拔赛中式面点技术文件
- 气液相反应动力学-
- 市政道路工程进度计划横道图
- 小数四则混合运算专项练习-及答案
- 凡尔赛宫 园林设计案例分析
评论
0/150
提交评论