《Unity课程设计移动终端游戏开发FlappyBird游戏设计.docx》由会员分享,可在线阅读,更多相关《Unity课程设计移动终端游戏开发FlappyBird游戏设计.docx(18页珍藏版)》请在第一文库网上搜索。
1、移动终端游戏开发题目:F1aPPyBird游戏设计目录1需求分析12概要设计12.1 设计思路12.2 存储结构设计22.3 功能模块设计33详细设计41.1 1游戏工程视图41.2 游戏界面布局61.3 功能模块设计实现73.3.1游戏开始设计73.3.2小鸟移动模块设计83.3.3管道碰撞模块设计83.3.4场景延续模块设计93.3.5分数统计模块设计93.3.6游戏结束模块设计103.4其他设计实现111.1.1 1摄像机的跟随111.1.2 游戏音效的添加121.1.3 游戏开始界面的设计124运行与测试135总结16参考文献16一、选题背景二、选题意义三、需求分析1 .技术需求:此游
2、戏是在Unity5.3.3上开发出来的,Unity5.3.3可以支持2D、3D场景的编辑,本游戏是基于3D场景开发的。游戏中的脚本语言使用的是C#,Unity5.3.3中的Monodeve1op为脚本编辑提供了平台。2 .功能需求:F1aPPyBird是一款益智类的小游戏,其玩法为:游戏开始后,玩家需间歇性的点击鼠标,让小鸟向上飞,不会掉下来,并且要穿过随机出现的管道的间隙,不能碰到管道,碰到就游戏结束,穿过一个管道就可以得到一分。其制作包括对以下六大功能的需求:(1)当开始游戏后,玩家需要单击指定位置才能开始游戏,否则无法开始;(2)需要通过点击屏幕来控制小鸟的位置,完成使小鸟上下移动的功能
3、;(3)需要对小鸟是否碰到地面或者管道进行判断,从而决定游戏是否结束;(4)需要设置触发器以实现场景的延续,当小鸟碰到触发器,场景中的第一幅背景便挪到最后一幅的后面,从而实现视觉上场景不断出现的效果;(5)需要对玩家进行记分,并对最高分进行判断和存储;(6)在失败后,需要使玩家通过点击按钮重新开始游戏。四、概要设计2.1 设计思路F1appyBird是一款形式简易但难度极高的休闲游戏,我们打算使用unity开发工具来制作这款游戏。经过分析,我们首先要完成的是对素材的收集,我们可以从网上搜索下载,也可以自己使用PS等工具来画。其次,我们需要对整个游戏进行模块划分,理清整个游戏是由哪几个模块组成的
4、,经过讨论分析,我们得出这个游戏共需要六大模块。分析完之后,便进入了正式的游戏制作环节,我们需要对各个模块进行详细设计,其中包括页面布局、碰撞检测、小鸟飞行动画等。完成各个模块的详细设计后,我们便可以在Unity中对它们进行组装和拼接,并运行测试,修改错误和不适当的地方。自此,整个游戏就设计完成了。2. 2存储结构设计1 .PiPe类:管道设计F1oatpos_y管道的Y轴值,目的是为了使管道能随机出现2 .Bird类:小鸟设计pub1icf1oattimer;/计时器,为了控制显示小鸟飞行动画pub1icintframeNumber;/一秒的帧数pub1icintframeCount;/帧计
5、数器3. FO11oWBird类:摄像机设计privateGameObjectbird;privateTransformbirdTransform;/bird的位置4. GameManager类:游戏状态设计pub1icstaticintGAMESTATE_MENU;游戏菜单状态pub1icstaticintGAMESTATE_P1AYING;游戏中状态pub1icstaticintGAMESTATE_END;游戏结束状态pub1icTransformfirstBg;用来记录应该将第一幅场景挪到哪幅场景的后面,以实现场景延续pub1icintscore=0;记录分数5. M。VCTrrigge
6、r类:触发器设计TransformCUrrentBg;用于当前场景的位置Pipepipe1;用于新出现的场景中管道1的位置Pipepipe2;用于新出现的场景中管道2的位置6. GameMenU类:游戏结束菜单设计pub1icGUITextnowScorc;当前分数pub1icGUITexthighScore;历史最高分pub1icGUITextureStartTeXture;开始按钮图片pub1icGUITextureoverTexture;/uGameOverw图片7. GameReady类:游戏开始菜单设计pub1icGUITexturereadyTexture;/aGetReady,图
7、片pub1icGUITextureTopTexture;/TapTap”图片pub1icstaticGameReady_intance2;2. 3功能模块设计F1appyBird游戏具有六大功能模块,分别为:(1)游戏开始模块:包括游戏开始菜单的设计;(2)小鸟移动模块:包括对小鸟飞行进行控制的设计;(3)管道碰撞模块:包括管道碰撞和穿过管道即可得分的设计;(4)场景延续模块:包括场景触发器的设计;(5)分数统计模块:包括对玩家分数的统计、显示和在游戏结束时,对玩家的分数进行判断的设计;(6)游戏结束模块:包括游戏结束菜单的设计;其功能模块图如图27所示:FIappyBird游戏开始模块管道碰
8、撞模块场景延续模块分数统计模块游戏结束模块图2-1功能模块图五详细设计2.1 游戏工程视图在新建项目后,我们需要在“Assets”文件夹下导入素材“Audios”:游戏音乐素材文件夹,包括游戏开始音乐、小鸟煽动翅膀的音乐、得分的音乐、撞到管道和地面的音乐、小鸟死亡的音乐;Textures”:图片素材文件夹,包括:游戏背景、管道、小鸟、游戏菜单等。“Audios”文件夹如图3T所示:图3T“Audios”文件夹“Textures”文件夹如图3-2所示:图3-2“Textures”文件夹然后我们需要新建“Materia1s”:材质文件夹;“Prefabs”:预制文件夹;Scenes”:游戏场景文件
9、夹;“Scripts”:脚本文件夹。总体工程视图如图3-3所示:图3-3总体工程视图3. 2游戏界面布局1 .开始界面游戏开始界面如图3-4所示,左上角的“Score”为分数,中间的图画为开始按钮,单击“GetReady”即可开始游戏,右边的管道为小鸟行进途中的障碍,当小鸟碰到障碍,游戏便结束,但当小鸟通过一个障碍即可得一分。2 图3-4开始界面3 .结束界面游戏结束界面如图3-5所示,中间的为菜单栏,显示当轮游戏分数和历史最高分,并根据分数来显示所得奖牌的种类,分为金牌、银牌、铜牌,我们可以单击“重新开始”按钮来重新开始游戏。4 图3-5结束界面5 .3功能模块设计实现6 .3.1游戏开始设
10、计游戏开始界面与游戏进行界面相似,但一开始没有管道,目的是为了给玩家一个反应的时间。当程序检测到玩家在游戏界面内点击了鼠标,那么就进入了游戏进行界面。程序如下:pub1icstaticintGAMESTATEJfENU=O;pub1icstaticintGAMESTATE_P1AYING=1;pub1icstaticintGAMESTATE_END=2;voidUpdate()if(GameState=GameManagenGAMESTATE-MENU)if(Input.GetMouseButtonDown(0)GameState=GAMESTATE_P1AYING;bird.SendMess
11、age(get1ife);)pub1icvoidget1ifeOGetComponent().UseGravity=true;this.GetComponent().ve1ocity=newVector3(3,0,0);3.3.2小鸟移动模块设计进入游戏进行界面后,小鸟会显示飞行的动画,在Unity中进行相关参数的设置后,我们需要通过代码来控制小鸟飞行动画,程序如下:if(GameManager.intance.GameState-GameManager.GAMESTATEP1AYING)timer+=Time.de1taTime;if(timer=1.Of/frameNumber)frame
12、Count+;timer一=1.Of/frameNumber;intframeindex=frameCount%3;this.GetComponent().materia1.SetTextureOffset(,JIainTezz,newVector2(0.333333f*frame1ndex,0);)我们通过点击鼠标来控制小鸟进行移动,程序如下:if(GameManager._intance.GameState=GameManager.GAMESTATE_P1AYING)if(Input.GetMouseButton(0)按下左键GetComponent().P1ay();Vector3ve1
13、2=this.GetComponent().ve1ocity;this.GetComponentO.ve1ocity-newVector3(ve12.x,4,ve12.z);)3. 3.3管道碰撞模块设计当小鸟碰撞到管道,游戏便结束,此时我们便不能再控制小鸟进行移动,管道碰撞程序如下:voidOnCoI1isionEnter(CoI1isionother)if(other,gamebject.tag=P1ayer)hitMusic.P1ayO;dieMusic.P1ayO;GameManager._intance.GameState=GameManager.GAMESTATE_END;4. 3
14、.4场景延续模块设计当小鸟在飞行过程中,后面的场景应该是不断更新的,我们需要在第三个场景中设置一个触发器,当小鸟碰撞到这个触发器后,我们便把第一个场景挪到最后面,这样我们的场景就能一直不断的更新,程序如下:pub1icvoidOnTriggerEnter(Co11iderother)print(OnTriggerEnter);if(other.tag-z,P1ayerz,)TransformfirstBg=GameManager._intance.firstBg;CurrentBg.position=newVector3(firstBg.position,x+10,currentBg.position,y,currentBg.position,z);GameManager._intance.firstBg=currentBg;/管道的新位置pipe1.RandoniGeneratePositionO;pipe2.RandomGeneratePosition();5. 3.5分数统计模块设计当小鸟通过管道后,分数便会加1,所以我们需要在管道中间设置一个触发器,并使用代码控制小鸟在碰到触发器后分数能加1,同时显示分数,程序如下:voidOnTriggerExit(Co11iderother)if(other,tag=P1ayer)GetComponentO.P1ayO;Gam