Unity课程设计_第1页
Unity课程设计_第2页
Unity课程设计_第3页
Unity课程设计_第4页
Unity课程设计_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、移动终端游戏开发课程设计说明书题目: flappy bird游戏设计 院 系: 专业班级: 学 号: 学生姓名: 指导教师: 2016年 6 月 30 日安徽理工大学课程设计(论文)任务书 学院 学 号学生姓名专业(班级)设计题目 flappy bird游戏设计 设计技术参数系统平台:windows 7开发工具:unity、monodevelop开发语言:c#设计要求1.能够统计分数,并记录以往最高分2.管道出现具有随机性3.界面合理、友好工作量课程设计报告4945字源程序314行工作计划2016.04.15-04.22 根据课程设计的要求,查找相关资料,完成需求分析;2016.04.23-0

2、5.07 进行系统的概要设计;2016.05.08-06.12 进行系统的详细设计和源代码的书写;2016.06.13-06.30 对系统进行调试分析,撰写课程设计报告。参考资料1严蔚敏,吴伟民. 数据结构. 北京:清华大学出版社,2011 2立波.c#入门经典.北京:清华大学出版社,2006 3金玺曾.unity3d手机游戏开发.北京:清华大学出版社,2013 4指导教师签字教研室主任签字 2016年 4月 1 日 安徽理工大学课程设计(论文)成绩评定表学生姓名: 学号: 专业班级: 课程设计题目: flappy bird游戏设计 评价单元评价要素

3、评价内涵优良中差知识水平30%文献查阅与知识运用能力(20分)能独立查阅文献资料,并能合理地运用到程序设计训练之中;能将所学课程(专业)知识准确地运用到程序设计之中,并归纳总结本程序设计训练所涉及的有关课程知识程序设计方案(10分)程序设计整体思路清晰,程序设计方案合理可行设计表现50%工作量(10分)课程设计工作量饱满设计态度(10分)设计态度认真,遵守程序设计阶段的纪律,作风严谨,能按时完成设计任务书中规定的任务,按时上交课程设计有关资料实际动手能力(20分)实际动力能力强,能独立完成相关设计任务创新能力(10分)有一定的创新能力说明书质量20%写作水平(10分)整体思路清晰,结构合理,层

4、次分明,语言表达流畅,综合概括能力强写作规范(10分)符合课程设计说明书的基本要求,用语、格式、图表、数据及各种资料引用规范(符合标准)成绩: 指导教师: 年 月 日目录1 需求分析12 概要设计12.1 设计思路12.2 存储结构设计22.3 功能模块设计33 详细设计33.1 游戏工程视图33.2 游戏界面布局53.3 功能模块设计实现63.3.1游戏开始设计63.3.2小鸟移动模块设计73.3.3管道碰撞模块设计83.3.4场景延续模块设计83.3.5分数统计模块设计83.3.6游戏结束模块设计93.4 其他设计实现103.4.1 摄像机的跟随103.4.2 游戏音效的添加113.4.3

5、 游戏开始界面的设计114 运行与测试125 总结15参考文献15 1 需求分析1.技术需求: 此游戏是在unity5.3.3上开发出来的,unity5.3.3可以支持2d、3d场景的编辑,本游戏是基于3d场景开发的。游戏中的脚本语言使用的是c#,unity5.3.3中的monodevelop为脚本编辑提供了平台。2.功能需求: flappy bird是一款益智类的小游戏,其玩法为:游戏开始后,玩家需间歇性的点击鼠标,让小鸟向上飞,不会掉下来,并且要穿过随机出现的管道的间隙,不能碰到管道,碰到就游戏结束,穿过一个管道就可以得到一分。其制作包括对以下六大功能的需求:(1)当开始游戏后,玩家需要单

6、击指定位置才能开始游戏,否则无法开始;(2)需要通过点击屏幕来控制小鸟的位置,完成使小鸟上下移动的功能;(3)需要对小鸟是否碰到地面或者管道进行判断,从而决定游戏是否结束;(4)需要设置触发器以实现场景的延续,当小鸟碰到触发器,场景中的第一幅背景便挪到最后一幅的后面,从而实现视觉上场景不断出现的效果;(5)需要对玩家进行记分,并对最高分进行判断和存储;(6)在失败后,需要使玩家通过点击按钮重新开始游戏。 2 概要设计2.1 设计思路flappybird是一款形式简易但难度极高的休闲游戏,我们打算使用unity开发工具来制作这款游戏。经过分析,我们首先要完成的是对素材的收集,我们可以从网上搜索下

7、载,也可以自己使用ps等工具来画。其次,我们需要对整个游戏进行模块划分,理清整个游戏是由哪几个模块组成的,经过讨论分析,我们得出这个游戏共需要六大模块。分析完之后,便进入了正式的游戏制作环节,我们需要对各个模块进行详细设计,其中包括页面布局、碰撞检测、小鸟飞行动画等。完成各个模块的详细设计后,我们便可以在unity中对它们进行组装和拼接,并运行测试,修改错误和不适当的地方。自此,整个游戏就设计完成了。2.2 存储结构设计 1pipe类:管道设计 float pos_y /管道的y轴值,目的是为了使管道能随机出现 2bird类:小鸟设计 publicfloattimer;/计时器,为了控制显示小

8、鸟飞行动画 publicintframenumber;/一秒的帧数 publicintframecount;/ 帧计数器 3. followbird类:摄像机设计 private gameobject bird; private transform birdtransform;/bird的位置 4. gamemanager类:游戏状态设计 publicstaticintgamestate_menu;/游戏菜单状态 publicstaticintgamestate_playing;/游戏中状态 publicstaticintgamestate_end; /游戏结束状态 publictransfo

9、rmfirstbg;/用来记录应该将第一幅场景挪到哪幅场景 的后面,以实现场景延续 publicintscore=0;/记录分数 5. movetrrigger类:触发器设计 transform currentbg;/用于当前场景的位置 pipe pipe1;/用于新出现的场景中管道1的位置pipe pipe2;/用于新出现的场景中管道2的位置 6. gamemenu类:游戏结束菜单设计publicguitextnowscore;/当前分数publicguitexthighscore;/历史最高分publicguitexturestarttexture;/开始按钮图片publicguitext

10、ureovertexture; /“game over”图片 7. gameready类:游戏开始菜单设计publicguitexturereadytexture;/“getready”图片 publicguitexturetoptexture;/“tap tap”图片 publicstaticgameready_intance2; 2.3 功能模块设计flappy bird游戏具有六大功能模块,分别为:(1) 游戏开始模块:包括游戏开始菜单的设计;(2) 小鸟移动模块:包括对小鸟飞行进行控制的设计;(3) 管道碰撞模块:包括管道碰撞和穿过管道即可得分的设计;(4) 场景延续模块:包括场景触发

11、器的设计;(5) 分数统计模块:包括对玩家分数的统计、显示和在游戏结束时,对玩家的分数进行判断的设计;(6) 游戏结束模块:包括游戏结束菜单的设计;其功能模块图如图2-1所示:flappy bird小鸟移动模块管道碰撞模块场景延续模块分数统计模块游戏结束模块游戏开始模块 图2-1 功能模块图3 详细设计3.1 游戏工程视图在新建项目后,我们需要在“assets”文件夹下导入素材“audios”:游戏音乐素材文件夹,包括游戏开始音乐、小鸟煽动翅膀的音乐、得分的音乐、撞到管道和地面的音乐、小鸟死亡的音乐;“textures”:图片素材文件夹,包括:游戏背景、管道、小鸟、游戏菜单等。“audios”

12、文件夹如图3-1所示: 图3-1 “audios”文件夹“textures”文件夹如图3-2所示: 图3-2 “textures”文件夹然后我们需要新建“materials”:材质文件夹;“prefabs”:预制文件夹;“scenes”:游戏场景文件夹;“scripts”:脚本文件夹。总体工程视图如图3-3所示: 图3-3 总体工程视图3.2 游戏界面布局1.开始界面 游戏开始界面如图3-4所示,左上角的“score”为分数,中间的图画为开始按钮,单击“getready”即可开始游戏,右边的管道为小鸟行进途中的障碍,当小鸟碰到障碍,游戏便结束,但当小鸟通过一个障碍即可得一分。 图3-4 开始界

13、面2.结束界面 游戏结束界面如图3-5所示,中间的为菜单栏,显示当轮游戏分数和历史最高分,并根据分数来显示所得奖牌的种类,分为金牌、银牌、铜牌,我们可以单击“重新开始”按钮来重新开始游戏。 图3-5 结束界面3.3 功能模块设计实现3.3.1游戏开始设计游戏开始界面与游戏进行界面相似,但一开始没有管道,目的是为了给玩家一个反应的时间。当程序检测到玩家在游戏界面内点击了鼠标,那么就进入了游戏进行界面。程序如下: public static int gamestate_menu =0; public static int gamestate_playing =1; public static in

14、t gamestate_end =2; void update ()if (gamestate =gamemanager.gamestate_menu) if (input.getmousebuttondown (0) gamestate = gamestate_playing;bird.sendmessage (getlife); public void getlife()getcomponent().usegravity = true;this.getcomponent().velocity = new vector3(3,0,0);3.3.2小鸟移动模块设计 进入游戏进行界面后,小鸟会显

15、示飞行的动画,在unity中进行相关参数的设置后,我们需要通过代码来控制小鸟飞行动画,程序如下:if(gamemanager._intance.gamestate=gamemanager.gamestate_playing)timer+=time.deltatime;if(timer=1.0f/framenumber)framecount+;timer-=1.0f/framenumber;intframeindex=framecount%3;this.getcomponent().material.settextureoffset (_maintex,newvector2(0.333333f*

16、frameindex,0);我们通过点击鼠标来控制小鸟进行移动,程序如下:if(gamemanager._intance.gamestate =gamemanager.gamestate_playing)if(input.getmousebutton(0) /按下左键 getcomponent().play(); vector3vel2=this.getcomponent().velocity; this.getcomponent().velocity = newvector3(vel2.x,4,vel2.z); 3.3.3管道碰撞模块设计 当小鸟碰撞到管道,游戏便结束,此时我们便不能再控制小

17、鸟进行移动,管道碰撞程序如下:voidoncollisionenter(collisionother) if(other.gameobject.tag=player) hitmusic.play(); diemusic.play(); gamemanager._intance.gamestate=gamemanager.gamestate_end; 3.3.4场景延续模块设计 当小鸟在飞行过程中,后面的场景应该是不断更新的,我们需要在第三个场景中设置一个触发器,当小鸟碰撞到这个触发器后,我们便把第一个场景挪到最后面,这样我们的场景就能一直不断的更新,程序如下:publicvoidontrigg

18、erenter(colliderother) print(ontriggerenter); if(other.tag=player) transformfirstbg = gamemanager._intance.firstbg; currentbg.position=newvector3(firstbg.position.x+10,currentbg.position.y,currentbg.position.z); gamemanager._intance.firstbg=currentbg; /管道的新位置 pipe1.randomgenerateposition(); pipe2.ra

19、ndomgenerateposition(); 3.3.5分数统计模块设计 当小鸟通过管道后,分数便会加1,所以我们需要在管道中间设置一个触发器,并使用代码控制小鸟在碰到触发器后分数能加1,同时显示分数,程序如下:voidontriggerexit(colliderother) if(other.tag=player) getcomponent().play(); gamemanager._intance.score+;/分数voidongui() guilayout.label(score:+gamemanager._intance.score); 游戏结束时,将显示本轮分数和历史最高分,代

20、码如下:if(gamestate=gamemanager.gamestate_end) gamemenu._intance.gameobject.setactive(true); gamemenu._intance.updatescore(score); 3.3.6游戏结束模块设计当小鸟碰撞到管道或者地面时,游戏便会结束,此时显示游戏结束画面,同时显示本轮分数和历史最高分,并根据分数来显示所得奖牌种类,同时有重新开始按钮,点击即可重新开始游戏,此为无限循环过程。代码如下:voidawake() _intance=this; this.gameobject.setactive(false);pu

21、blicvoidupdatescore(floatnowscore) floathighscore=playerprefs.getfloat(score,0); if (nowscorehighscore)highscore=nowscore; inta; a=int.parse(nowscore.tostring(); if (a0&a10&a30|a=30) modelmenu3._intance5.gameobject.setactive(true); playerprefs.setfloat(score,highscore); this.nowscore.text=nowscore+;

22、 this.highscore.text=highscore+; if(input.getmousebuttondown(0)&gamemanager._intance.gamestate=gamemanager.gamestate_end) /重新开始游戏rectrect=starttexture.getscreenrect();vector3mousepos=input.mouseposition;if(mousepos.xrect.x& mousepos.xrect.y& mousepos.y2.3f) y=2.3f;if(yrect.x& mousepos.xrect.y& mouse

23、pos.y(rect.y+rect.height) gamestate=gamestate_playing; bird.sendmessage(getlife); 4 运行与测试1.我们运行游戏,进入游戏界面。一开始出现一个静止不动的画面,我们需要单击“get ready!”来开始游戏,游戏开始界面如图4-1所示: 图4-1 游戏开始界面2.当开始游戏后,我们需要间歇性点击鼠标来控制小鸟向上飞行,每次点击只会让小鸟获得一次速度,接着就会在重力的作用下向下落,如果接触到地面或者触碰到管道,游戏就会结束。经过测试,我们可以开始游戏并能控制小鸟进行飞行,游戏进行界面如图4-2所示: 图4-2 游戏进行界面3.当我们触碰到管道时,我们便失去对小鸟的控制,弹出游戏结束菜单,我们可以在菜单中看到自己此轮的分数、历史最高分和所得奖牌种类,并选择是否继续游戏。经过测试,当小鸟触碰到管道时,游戏结束,并弹出菜单,当得分在09之间,游戏结束界面如图4-3所示: 图4-3 得分在010之间的结束界面当得分在1029之间,游戏结束界面如图4-4所示: 图4-4 得分1029之间的结束界面当得分在30以上,游戏结束界面如图4-5所示: 图4-5 得分在30以

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论