基于Unity3D的坦克大战游戏

基于Unity3D的坦克大战游戏

ID:47477777

大小:464.71 KB

页数:14页

时间:2020-01-11

上传者:无敌小子
基于Unity3D的坦克大战游戏_第1页
基于Unity3D的坦克大战游戏_第2页
基于Unity3D的坦克大战游戏_第3页
基于Unity3D的坦克大战游戏_第4页
基于Unity3D的坦克大战游戏_第5页
资源描述:

《基于Unity3D的坦克大战游戏》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

第5章结束语基于Unity3D的坦克大战游戏I 第5章结束语目录第1章绪论11.1选题背景及意义11.2发展现状21.3研究的主要内容与方法21.4文档结构安排2第2章系统分析与设计42.1用户需求分析42.2游戏规则42.3美工需求42.4功能需求5第3章系统实现63.1主角63.2敌方坦克63.3子弹6第4章系统测试74.1测试要点74.2测试时间、地点、人员74.3测试环境描述74.4功能测试执行情况8第5章结束语95.1总结95.2不足及展望10I 第5章结束语第1章绪论1.1选题背景及意义游戏软件业是一个新兴行业,存在着巨大的生存和发展空间,同时它也是一个存在社会争议的行业。 游戏的完整定义可以归纳为:一种由道具和规则构建而成、由人主动参与、有明确目标、在进行过程中包含竞争且富于变化的以娱乐为目的的活动,它与现实世界相互联系而又相互独立,能够体现人们之间的共同经验,能够体现平等与自由的精神。 游戏产业准确地讲应该叫做电子娱乐业,是指基于电子技术、计算机技术、软件技术、网络技术和无线技术的新型娱乐产业,分为单机游戏、网络游戏和无线游戏等几个部分。电子游戏业从诞生至今已经有几十年的时间,可仅仅在这短短的几十年的时间里,它却在发达国家的经济发展中发挥了显著的作用。 游戏软件业从诞生到现在,历经几代的发展,已进入了一个非常成熟的时期。对于我国而言,游戏软件业也有快速的发展,但是因为很多原因阻碍了这个产业的发展,如游戏软件研发人才缺乏,软件开发投入不足;对青少年的负面影响,一些不健康的游戏软件导致了社会对游戏软件的偏见;技术滞后等情况。 坦克大战游戏是一款风靡全球的电视游戏机和掌上游戏机游戏,它曾经造成的轰动与造成的经济价值可以说是游戏史上的一件大事。它看似简单但却变化无穷,令人上瘾。相信大多数用户都还记得为它痴迷得茶不思饭不想的那个坦克大战时代。究其历史,坦克大战最早还是出现在FC机上,现在又重新掀起这股让人沉迷的坦克大战风潮,它的规则简单,容易上手,且游戏过程变化无穷,使用户既能感受到游戏中的乐趣,也给用户提供了一个展现自己高超技艺的场所。这次练习的是在Unity上生成坦克大战游戏。Unity是一个非常好的3D游戏开发软件,Unity3D是由UnityTechnologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。Unity类似Director,Blendergameengine,TorqueGameBuilder等利用交互的图型化开发环境为首要方式的软件。其编辑器运行在Windows和MacOSX下,可发布游戏至Windows、Mac、Wii、iPhone、Windowsphone11 第5章结束语8和Android平台。也可以利用Unitywebplayer插件发布网页游戏,支持Mac和Windows的网页浏览。它的网页播放器也被Macwidgets所支持。“千里之行,始于足下”,尤其是在迈出了坦克大战的第一步之后,实际上,已经走进了软件开发,尤其是游戏开发的大门,前面的世界是美丽多彩而又充满挑战的。1.2发展现状坦克大战自推出以来,发展多个版本,并在各个平台都有衍生作品,得到了众多玩家的喜爱。正传系列1980-坦克营(TankBattalion),MSX1985-坦克大战(BattleCity),FC1991-坦克大战(BattleCity),GB1994-导弹坦克(MissileTank),FC1996-坦克大战(BattleCity),SGB2008-3D重制版突击坦克(TankattheGates),PC2009-坦克大战online,网页游戏1.3研究的主要内容与方法1、开发环境选用了unity3d:unity3d的主要特性有层级式的综合开发环境,可视化编辑,详细的属性编辑器和动态的游戏览,开发人员可以在边开发的过程中边看到游戏做出来的效果。2、遇到的问题:在边学边开发的过程中,也遇到了一些问题,子弹射击的方向不是直线的,对坦克的命中率低。3、解决方法:充分利用网络的优点,利用百度,还有各种论坛向网友咨旬,对得到的方法进行尝试,最终得以改进。1.4文档结构安排本论文主要阐述二维平面射击游戏的设计与实现,全文共分为五章:1)第一章:绪论。介绍项目大致背景及目标。2)第二章:系统分析与设计。项目需求分析及相关设计。3)第三章:系统实现。系统主要功能的实现。11 第5章结束语1)第四章:系统测试。测试系统的稳定性。2)第五章:总结。对项目经验的总结与心得体会。11 第5章结束语第2章系统分析与设计2.1用户需求分析此次项目所开发的坦克大战游戏主要面向:1)喜欢坦克游戏的玩家2)喜欢挑战高难度游戏的玩家此外,游戏开发出来是面向玩家的,因此游戏本身需要具备:1)简单易学2)运行稳定3)操作简便2.2游戏规则游戏最终将运行在Windows系统上,其游戏规则主要如下:1)通过W、A、S、D分别控制坦克进行上、下、左、右的移动2)点击鼠标左键控制射击3)玩家只要碰到障碍或被打中即死亡2.3美工需求游戏整体美工需求如下:1)整体布局清新简洁2)游戏色调为暖色调游戏中:1)显示主角、敌机及障碍物2)左上角显示当前分数3)显示游戏背景图片11 第5章结束语2.4功能需求坦克大战是一款经典的游戏本游戏在学习继承前辈的同时尝试性的进行一些创新下面是对系统主要功能的简要概述。整体上说,本游戏分为敌我双方,主战坦克由玩家控制,敌方坦克能够智能化的随机出现在屏幕上,并且移动但是不会发射子弹。玩家的控制:游戏打开的时候,玩家可以选择音乐音效的开关还可以查看积分榜,然后进入游戏,玩家可以通过屏幕上面的虚拟键控制坦克的运行,可以通过触屏来控制坦克的炮筒方向并且打出炮弹,当坦克打中敌方坦克,子弹和地方坦克都死亡,分数会加一。游戏过程中,玩家不可以暂停游戏,然后再开始游戏。当倒计时结束时,则游戏结束。敌方坦克的智能运行:敌方坦克由于需要具有一定的智能性,随机的出现在屏幕上,并且消失在屏幕以外,撞到主角坦克时,也不会发生爆炸。使之具有一定的可玩性。敌人可以自动行走,但是应当在以下适当的情况下转向:首先是是否超出界面的边界,其次是是否与地图障碍物发生了碰撞,再次是是否与用户坦克发生了碰撞。子弹的运行:主战坦克是有玩家控制打出的,通过控制炮筒的方向,向不同的方向发射子弹,如果击中目标就会爆炸消失,如果没有击中目标,出了屏幕也会消失。11 第5章结束语第3章系统实现3.1主角在人机对战时,主角的主要功能是点击左右虚拟按钮,坦克会向左向右移动,但是通过按住按钮的时间,来控制坦克的移动速度,按住时间长,坦克的速度就会加快,按住的时间短,坦克就会移动的比较慢。通过触屏来控制坦克炮筒的方向,并且发射子弹。当子弹打中目标时,子弹和目标都会爆炸,当子弹没有打中目标时,子弹走出屏幕,子弹消失。该游戏主要是控制在60秒内,倒计时为零则游戏结束,打中目标数就是该次游戏的分数。publicclassTankController:MonoBehaviour{privateSliderslider;publicTransformShell;privatefloatfireCoolTime=0;privateTransformTurret;privateTransformShellSapwanerPoint;privatefloatcurSpeed,targetSpeed,rotSpeed;privatefloatturretRotSpeed=10.0f;privatefloatmaxForwardSpeed=15.0f;privatefloatmaxBackwardSpeed=-15.0f;voidUpdateControl(){PlaneplayerPlane=newPlane(Vector3.up,transform.position+newVector3(0,0,0));Rayray=Camera.main.ScreenPointToRay(Input.mousePosition);floathitDist=0;if(playerPlane.Raycast(ray,outhitDist)){Vector3rayHitPoint=ray.GetPoint(hitDist);QuaterniontargetPoint=Quaternion.LookRotation(rayHitPoint-transform.position);Turret.transform.rotation=Quaternion.Slerp(Turret.rotation,targetPoint,Time.deltaTime*turretRotSpeed);}if(Input.GetKey(KeyCode.W))targetSpeed=maxForwardSpeed;elseif(Input.GetKey(KeyCode.S))targetSpeed=maxBackwardSpeed;elsetargetSpeed=0;if(Input.GetKey(KeyCode.A))11 第5章结束语transform.Rotate(0,-rotSpeed*Time.deltaTime,0);elseif(Input.GetKey(KeyCode.D))transform.Rotate(0,rotSpeed*Time.deltaTime,0);curSpeed=Mathf.Lerp(curSpeed,targetSpeed,7.0f*Time.deltaTime);transform.Translate(Vector3.forward*Time.deltaTime*curSpeed);}}3.2敌方坦克敌方坦克在游戏开始以后才开始出现,并且没有什么太大的规律,都是从屏幕的最右面出现,然后消失在屏幕以外或者被子弹击中消失。敌方坦克走的路线是有轨道的,从屏幕的右上方出现后,会走一段轨迹,在运动过程中如果被子弹打中就会爆炸消失,如果没有被击中,则会消失在屏幕以外的地方。voidMove(){transform.Translate(Vector3.forward*Time.deltaTime*speed);}voidFireToPlayerTank(){Quaternionrot=Quaternion.LookRotation(Player.position-transform.position);transform.rotation=Quaternion.Slerp(transform.rotation,rot,rotSpeed*Time.deltaTime);if(Vector3.Distance(transform.position,Player.position)<=10.0f){fireCoolTime+=Time.deltaTime;if(fireCoolTime>=1.0f){fireCoolTime=0;Instantiate(shell,ShellSpawnerPoint.position,rot);}}}3.3子弹publicclassShellMove:MonoBehaviour{voidStart(){}voidUpdate(){11 第5章结束语transform.Translate(Vector3.forward*30*Time.deltaTime);/*子弹射击速度*/Destroy(this.gameObject,5.0f);/*5s后销毁*/}}第4章系统测试4.1测试要点被测特性:1)对软件进行功能性测试2)对软件进行非功能性测试不被测特性:1)源代码,逻辑等;2)模块的接口,模块的错误处理,模块的局部数据结构,模块在执行时执行的独立路径,模块在处理边界值时的情形;3)单元(模块)之间的可用性等4.2测试时间、地点、人员本次测试的时间,地点,人员总结如下。11 第5章结束语测试时间:2016.5.20-2016.5.21地点:工作室人员:何成林4.3测试环境描述本次测试主要是采用黑盒测试,目的是验证基于Unity3D的平面射击游戏项目的功能是否已经实现,具体实现了哪些功能,界面设计是否和谐,以及运行环境需求的测试。测试配置环境如下:l操作系统:MicrosoftWindows7l浏览器:IE10.7lCPU:AMD2000MHzl内存:4GBl硬盘:500GB4.4功能测试执行情况1)游戏开始界面Start测试用例测试项目名称:游戏开始界面功能测试用例编号:estCase-Perf-1测试人员:测试时间:2016.5.20测试项目标题:非正常页面访问的测试测试内容:运行游戏后能进入开始界面测试环境与系统配置:详见4.3环境描述测试进行游戏开始测试次数10次预期结果进入了游戏开始界面测试过程直接在Unity中运行项目测试结果进入了游戏开始界面测试结论游戏此功能已经实现实现限制:在Unity环境中备注:无2)玩家坦克Player测试用例11 第5章结束语测试项目名称:玩家坦克功能测试用例编号:estCase-Perf-2测试人员:测试时间:2016.5.21测试项目标题:非正常页面访问的测试测试内容:玩家坦克能正常移动及发射子弹测试环境与系统配置:详见4.3环境描述测试进行游戏中测试次数10次预期结果坦克正常移动及射击测试过程开始游戏后对操作玩家坦克测试结果玩家坦克能正常运动并发射子弹测试结论游戏此功能已经实现实现限制在Unity环境中备注:无第5章结束语5.1总结本次设计已是大学最后一次对专业知识的综合实践活动,同时也是我所做的工作量最大的一次作业,因此从一开始我对本次毕业设计就给予了高度重视。从选题、收集资料、学习相关技术到实际编程,我都一丝不苟的对待了。当然其间我也走了不少弯路,有时甚至需要推倒重来,但同时我也多次体会过克服困难后的成就感。首先是编程能力方面得到了一个比较好的加强,其次就是让我了解了我的不足,一直以来我觉得自己学到的东西挺多的,但是通过这次毕业设计下来发现,我所了解的东西真的是沧海一粟,知识真的有太多太多,真的应了那句话,活到老学到老。这次设计是对大学所学的知识的一种检验,设计中发现自己的不足,查资料,找老师,问同学,当然主要是自己查资料,当然老师给了我很大的帮助,老师教我该用什么知识点,我然后自己去查。老师给了我一个学习的方向。11 第5章结束语过程是苦的,结果是甜的。一分耕耘一分收获。我的努力得到了回报,老师表扬了我,这给了我很大的鼓舞。通过这次的毕业设计,不仅在专业知识上有了比较好的巩固,而且更重要的是我的能力得到了提高,比如处理问题的能力,学习能力,等。毕业设计过去了,意味着我将踏上新的征程——工作!面对未来,我很自信!同时我还学会了一些编程技巧,而且对调试的错误有进一步的认识,有时候就一个小小的语法错误就会导致程序调试不通过。所以每个字符,每句程序都要认真对待。使用不同的编程环境,其效率完全不一样,所以我选择了Eclipse,它自动找错/纠错功能、Debug调试和代码自动生成等一些重要的功能大大提高了我的设计效率。对于设计论文,一定要注意格式,认识事情都有它的规则、规范,不能按个人喜好随意改变。毕业设计跟我们平时上的基础课或者专业课不同!它是一个重要课题!要用到很多综合性的知识!最重要的是让学生体验一下做科学研究的整个过程。也是毕业最重要的一个过程!它最能把理论知识准确运用到实际当中的去!做好了它就是就是一份成功的毕业设计了。随着答辩日子的到来!我的毕业设计也快接近了尾声了。在我还没有做毕业设计以前觉得毕业设计只是对这几年来所学知识的单纯性的总结!但是通过这次做毕业设计发现自己的看法有点太片面和简单了。通过这次毕业设计的编制使我明白了自己原来的知识还是比较欠缺。自己要学习的东西还太多太多!以前总是觉得自己什么东西都会!什么东西都懂!有点眼高手低。通过这次毕业设计的收集编制等等!我才明白学习是一个长期积累的过程!在以后的工作和生活当中我们都应该不断的努力学习!努力的去提高自己知识和综合素质本系统实现了坦克游戏所应有的基本功能,但是由于时间和能力有限,还有一部分功能未能实现,例如:外部文件读取、坦克的高级人工智能控制等,不能和现在Internet上各种坦克大战游戏相媲美。还有就是对部分功能在设计过程中未能做到更加完善,稍有瑕疵。本来预想的坦克在飞行中,能够向下丢炸弹,主角碰到炸弹死亡,生命数量减一。为了游戏的娱乐性,本来想在游戏中设置一些特技,设置一个冰弹打中坦克后,所有的小坦克都会被冻结,时间也停止;设置高爆弹,直接能把屏幕上的所有小坦克都清除掉这些都没能够实现。还有其他的心里面想的功能没有实现,联机对战。5.2不足及展望在设计开始之前,本人大致了解了简单的游戏项目开发,但是由于没有系统地学习脚本编写,所以在动手制作游戏过程中,经常卡在脚本的编写上。例如前面设计中的关卡设置的脚本就成为开发中很大的一个难题。在查阅资料和视频之后,成功将一些问题解决,但是薄弱点依然存在。同学和老师在游戏的开发中给予了本人很大的帮助,推荐了一些有用的资料和教程,让游戏制作成功。 游戏虽然制作成功,但是存在着以下问题:11 第5章结束语1)界面不美观;2)功能上较为简单,可玩性不高。Unity3D是一款非常强大的游戏开发软件,它有着强大的跨平台能力,在本设计的最后测试阶段中可以看出,同样一款游戏,仅仅因为封装类型不同,在PC平台和在Android平台可以无差别运行。这样一来,免去了游戏在不同平台之间移植的复杂工作,同时节约了开发成本。可以预料,在接下来的一段时间,Unity3D将成为游戏开发行业的热门工具。也就是说,学会运用这门工具,才能更好地在游戏开发行业发展。 在今后的工作中,本人将继续学习,此毕业设计的开发过程中遇到的一些问题和游戏本身存在的一些问题将是本人今后一段时间努力学习和工作的方向,同时,还将用心学好Unity3D这个工具。11

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
大家都在看
近期热门
关闭