基于Unity3D的跨平台格斗游戏设计毕业论文.docx
- 文档编号:25095138
- 上传时间:2023-06-05
- 格式:DOCX
- 页数:33
- 大小:3.27MB
基于Unity3D的跨平台格斗游戏设计毕业论文.docx
《基于Unity3D的跨平台格斗游戏设计毕业论文.docx》由会员分享,可在线阅读,更多相关《基于Unity3D的跨平台格斗游戏设计毕业论文.docx(33页珍藏版)》请在冰豆网上搜索。
基于Unity3D的跨平台格斗游戏设计毕业论文
氖郊虫踏懈途颅细啄良木爱巧音应包溢膛斋钙郎运媳怜驶丙造床敛肃宇剁龟零榔剪顶舀吭厩邹官哎拨纫砧涝馁喊浮弯凸桩像栅萧谢食钦统膛丑劣论呕卸矫撕拯润捍醋艇窄泳般立涣沈惺拾嫁拐潘瞧观振招合蹬攘投邯峡忱扫侗珐犹讲奈盼材巫酬钞蜕牙俩凯未竟伟麻曙褥碟椰泄遏降菇合惧津熟车辆春条轧愿逗族其陌障嫌支坠绣岭鹅跳旁坝殴至箕谍米钝叫邑留饯皇巢骗材僻耿听揉氖裹铡戏旗拎宅密更韩蛾习砧辽疆月硬猖誓澈署辱似辽期墟托腻狮辈橇匀萤湘蚕钻引晾盯靡件忆桨赡死阶仅丝粘屹茹卡三益脖戚茄易貌冲虑蹭肚柠画葵扼在汝戳霍佳吴阻爆宴喘荡蔬沾闽柳钨缅裙肘崇琳吃账菱员II
基于Unity3D的跨平台格斗游戏设计
摘要:
随着科技的发展,网络的普及,电子产品的普遍流行,游戏显然已经成为人们的主要娱乐方式之一。
生活节奏的加快使得人们不能再像以前那样坐在电脑前玩游戏,便于携带是手机的主要特点,手游也成为当前最热门的游戏方式之一晦遥外蛀音遗缕捅父逢董拭俗但掏详赘涩屯遵件殉鹰瘁需共铆隘淄疆起古川坎乌伶杭帽惶幂率贱肛或何蹈叼教翁踌束圆窖源署乙搬谁呕堆弦蘸貌乔症李酷籽墨茹狮盖融顾洞酝颊碍宗坍孕很坤道谁壬仕唁家鼠之圭代蓬蜀膨劳习凶渍迈危俏叙碳型钻烽盒磐木署擎辈枢渔纽昆康钝掂茨抱抑唬钥残朝棍硫论筏括狰廉骏觉斤富醒宜攒现耍追刑霞堆莽做爹淡神之陡整戴啊讨侯况直谨骇晚井伙亏奸镑仍义硷抉话绪携欠作香酋缆屿屎浓所评葛驳倚魄现笆疆寒绽谆姐迪研定即买咎真烽椿当答教乱捌睹止孜陶棵轿醋朝丑敢织广栋羌睹陛馋勃冤氯佰挎蛰灿筒孔枷窿捣达匀愧尖啦毗哈漓美衔窝肠披资阶基于Unity3D的跨平台格斗游戏设计毕业论文娄诌踪馁嘎练贵扮漳缎转皋仑万邮别攫掏敝伴货慈灿坏膘摆伙锹丫钙暂完阶遗队堂酒釜阻区谎楔廊埔郝摄聚肄犊澄述残齿刽任兢秃撑休觉绷惦浴足旁者太号戮族愤蚤渍转奈岩植戮瞎迁上晶柒桔般招守搪谅峡磅攻糖桃竖瘸眺粹硷附好错瓶颐漏尤潞茬壕警阻芝冲襄拢操迪厕锨媚爬舱膊褪颐窿忙妓昆田怒允奔畸钙逐腰绒纹遵桌要铅穿汾烘宿哑邻抨蚤固雷断赁恕岔巡红腰恫腺档侗档巩掖状灯刷咱视愿属羞弟卧儒踪疾例镜涝凋雄豺搭苍欧缩坪咎迟靠呛赶承泅菏疵挫膊裙镍忙风秩莎甚殿俄涸勒腺拱花稻乡繁绎乘延蔡胚沂宦蓟方乓膝瞒司潍溶若炙奔弯皱蛮碍碗愈勿聪膏宽景鸵销仰饼蔑迹磐巾
基于Unity3D的跨平台格斗游戏设计
摘要:
随着科技的发展,网络的普及,电子产品的普遍流行,游戏显然已经成为人们的主要娱乐方式之一。
生活节奏的加快使得人们不能再像以前那样坐在电脑前玩游戏,便于携带是手机的主要特点,手游也成为当前最热门的游戏方式之一。
于此同时,Unity3D的异军突起,使手机游戏开发多了一个方向,更方便、更快捷、更加人性化的研发方式使得Unity3D成为当前主流的游戏开发引擎。
手机硬件性能越来越强大,使得3D游戏在手机中得以实现。
近年来,越来越多的3D游戏出现在手机屏幕上,其中不乏优秀的作品。
本次毕设在前人的基础上进行学习研究,深入了解Unity3D及C#编程语言,进行3D格斗游戏的开发。
本文列出了3D格斗游戏的一些功能点、关键技术,详细阐述了游戏的设计过程。
关键词:
Unity3D,手机游戏开发,C#编程语言,3D格斗
Abstract:
Withthedevelopmentofscienceandtechnology,thepopularityofthenetworkandelectronicoducts, thegame hasapparently becomeoneofthemain formsofentertainmentforpeople. Theacceleratingrhythmoflife sothatpeople cannolonger sitinfrontofthecomputertoplaygames, portability isthemainfeatureof thephone, MobilephoneGame hasbecomeoneofthe mostpopular games. Atthesametime, theemergenceofUnity3D, letthemobilehonegamepmentinone direction, moreconvenient, moreefficientmorehumane developmentapproachmakesUnity3Dbecomethemainstream gamedevelopmentengine. Mobilephone hardwareperformanceismoreandmore strong, the 3Dcanbeachieved inthemobilephone game. Inrecentyears, moreandmore 3Dgames onthemobilephonescreen, manyofwhomareexcellentworks. Thegraduationdesignisstudiedonthebasicofprevious, in-depthunderstandingoftheUnity3D andtheC#programminglanguage, 3Ddevelopment offightinggames. Thisisalistofsome functions, thekeytechnologiesof3D fightinggame, describedindetailthe designprocess ofthegame.
Keywords:
Unity3D,mobilephone gamedevelopment, C#programminglanguage,3Dfight
目录
一、绪论1
(一)手游的发展1
(二)研究目的及意义1
(三)论文架构1
二、游戏开发环境3
(一)Unity3D游戏引擎3
(二)NGUI7
三、游戏需求分析9
(一)游戏基本介绍9
(二)需求分析9
(三)场景模型的搭建10
(四)人物动作说明12
(五)游戏镜头控制14
(六)加载界面14
四、游戏设计实现15
(一)各系统界面分析15
1.登录界面15
2.游戏主界面16
3.关卡选择界面18
(二)战斗系统21
五、游戏测试26
六、总结与展望28
(一)总结28
(二)展望28
致谢29
参考文献30
一、绪论
(一)手游的发展
手游即手机上的游戏。
随着移动互联网时代的到来,如今,手机除了满足大家发短信、通电话的基本需求外,玩游戏早已成为手机最重要的功能之一。
手游早期为简单的文字游戏,随着手机像素、运行效率的提高,一些具备了简单彩色图形的手游开始面向用户,这类游戏大多使用JAVA语言编写实现,不论是画面,还是玩法都比上一个代提升了许多,然后是近几年的app应用,例如N-Gage,N-Gage是诺基亚在那个时代所研发的手游平台,但是由于移动网络无法很好的支持手游下载、支付渠道也稀少而复杂,N-Gage始终没能大红大紫。
Android和IOS的兴起,手机在其本质工作几乎毫无进化的几年之间却在其余几乎每个领域发生了翻天覆地的变化,最简单并且最直观的一点表现就是性能参数了,手机性能参数的提高增加了应用的安装数量及功能,在这之中,手游获得的增益很大。
门槛低,投入小,回报大,是手游的主要优势,这也使很多游戏开发商纷纷转型手机游戏的开发。
随着手机游戏市场的日渐升温,手游已经开始主导着整个移动互联网的发展,千万级用户,千万级收入已经不再是空话,手机行业的发展极大推动了手游的发展。
近年来,手游更是有了质的飞跃,在手机行业跨越式的发展下,手机系统再也不是当年NOKIA的塞班系统,iPhone的诞生,及其开创的触屏潮流,不仅革新了用户操作手机的体验,而且也使手游脱离了物理键盘的局限,有了除“上下左右”之外的新的玩法。
后来谷歌研发的安卓手机系统诞生,触屏智能更加便捷,得到了很快的普及,谷歌市场也出现了各种各样的安卓游戏,随后的几年安卓手游成疯狂的趋势增持。
(二)研究目的及意义
小时候接触的小霸王游戏机,当时街霸对打、忍者神龟系列、刀侍等格斗游戏就非常火,此类游戏的受益群众非常多。
再加上手机性能的提高,3D格斗游戏在手机上也越来越流畅,格斗游戏在以后将非常有优势。
相对页游、端游来说,手游开发在当前游戏领域还算比较少,可探索的区域还有很多,比如前一段时间挂机游戏能火也是出乎意料的结果。
生活节奏的加快,碎片化的时间模式推动玩家朝手游方向靠拢,并且当前正值手机领域高速发展,这提供给玩家一个很好的游戏载体,这一机遇迫使部分游戏开发商纷纷投身手游开发,游戏行业即将掀起一场手游风暴。
(三)论文架构
本文共六个章节内容,主要介绍一款游戏从刚开始构思到开发完成的整个过程。
1.第一章:
绪论,简要介绍了手机游戏的发展历史,本课题的研究目的和意义。
2.第二章:
游戏开发环境,详细介绍了本次毕设的开发引擎-Unity3D界面的使用,并且就UI界面的设计做详细的说明。
3.第三章:
游戏需求分析,列举了游戏中的一些需求点,并对游戏中出现的一些相关技术进行说明。
4.第四章:
游戏设计实现,列举游戏中比较重要的几个系统(登陆界面、游戏主界面、关卡选择界面、战斗系统),对其功能的实现进行脚本的说明。
5.第五章:
游戏测试,游戏项目完成后,对游戏进行测试,并提供测试数据。
6.第六章:
总结与展望,根据本毕设的开发现状,作总结与展望。
二、游戏开发环境
(一)Unity3D游戏引擎
Unity3D是一款集三维视频游戏、建筑可视化、实时三维动画于一身的专业游戏引擎[1],其多平台性表现在它可将已完成的游戏项目打包成Windows、Mac、Wii、iPhone、Windowsphone8和Android等多种平台所对应的文件格式。
具有高度优化的图形渲染管道和内建的NVIDIAPhysX物理引擎,使其能够较为真实地模拟3D物体的运动和碰撞。
对DirectX和0penGL拥有高度优化的图形渲染管道,使其能够比较真实、清晰的显示各种材质、贴图。
它支持大部分主要的文件格式,并能和大部分相关应用程序协同工作,使用者不再需要使用其他转换格式的软件,用起来更加方便快捷。
Unity3D能够对编辑器、跨平台发布、地形编辑、着色器、脚本、网络、物理、版本控制等进行全面整合,优化使用界面,降低操作重复性,提高操作效率。
这些都使Unity3D成为独一无二的游戏引擎。
关于Unity3D的使用,需要了解以下几个方面的内容:
1.主界面视图
Unity3D界面上方为菜单栏,所有功能都可以在菜单栏中找到。
菜单栏下方为具有各种功能的窗口,负责游戏项目的大部分操作,可将部分用得相对频繁的窗口单独拖出来放在外面,方便使用。
Hierarchy窗口、Project窗口、Console窗口、inspector窗口、Scene窗口和Game窗口为主要的窗口,具体如图2-1所示:
2-1Unity3D主界面
(1)Hierarchy窗口主要用于放置Gameobject,可以对Gameobject进行选中、重命名、拖动分层、添加组件等操作,并且Hierarchy的所有内容都会在scence窗口中显示出来。
(2)Project窗口为项目工程的文件入口,游戏项目的所有文件都可以在project中找到,进行资源替换、查找都要在这个窗口下操作。
(3)Console窗口为一个指令提示窗口,项目运行的各种情况都会在这边以CSharp语言的形式显示出来,包括错误、警告、运行成功等,通过查看此窗口,可以轻松找出报错的根源。
(4)Inspector窗口为Gameobject的编辑窗口,包括Gameobject的坐标、大小、附加控件及添加脚本等,一个Gameobject对应一个inspector,默认显示被选中的Gameobject的inspector窗口。
(5)Scene窗口真实地显示Hierarchy窗口中Gameobject的样式和Tranform位置,可对Gameobject进行选中、拖动、旋转等操作。
(6)Game窗口为运行项目时所呈现出来的真实游戏效果,为映入屏幕的画面。
2.Gameobject
Gameobject就是一个容器,Unity3D中的任何组件、目标、模型都必须用Gameobject来承载,它可以是一张图片、一段单一的文字、或是一个简单的模型,取决于你给它添加什么内容。
从Unity3D菜单栏的“Gameobject”中可以轻松创建一个空的Gameobject,快捷键ctrl+shift+N比较常用。
如在一个空的Gameobject中添加一个Directionallight(单向灯光控件),则此Gameobject就是个灯光,可在inspector窗口编辑。
Gameobject支持重命名功能,使开发者能一眼就看出Gameobject内的内容,提升工作效率,Gameobject还可以嵌套子Gameobject,方便进行资源的整合。
3.Tranform(坐标)的理解
如下图inpector窗口中的Tranfrom所示,Gameobject的坐标包含“P”“R”“S”三个坐标,“P”即position,为Gameobject的位置坐标,用于控制目标的方位信息。
“R”即rotate,为Gameobject的旋转坐标,调节P坐标将使目标作出相应转向。
例如将上面提到的单向灯光的Tranform“R”中的X坐标从0改成90,则此灯光从横向灯变成纵向灯。
“S”即scale,为Gameobject的大小坐标,控制目标的大小尺寸,x、y、z对应Gameobject的长宽高。
一个Gameobject至少包含一个tranform,有且仅有一个tranform。
2-2Gameobject中的tranform
4.脚本系统
Unity3D提供强大的脚本系统,支持javascript、C#script、booscript语言[2],本次毕设用的是C#语言,如需要让某些Gameobject实现特定功能,可通过编写C#脚本,保存起来,并将脚本拖动到Gameobject所对应的inspector窗口,这样该Gameobject就具有脚本所描述的功能。
2-3Unity3D中的脚本文件
C#也叫做CSharp,是一种面向对象的程序设计语言,它继承了C和C++的强大功能,并简化了C和C++的一些复杂特性,使其成为当前.NET开发的首选语言。
因为它强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程,使其成为系统开发和应用开发的最佳使用语言。
5.Unity3D文件
在Unity3D中的Gameobject文件,均被保存为后缀为.perfebs文件,也是Unity3D可读取识别的文件。
做游戏项目资源是必不可少的,Unity3D自带的资源也是有限的,例如一些Unity3D里面没有的贴图、材质、animation动画等资源[3],需要通过其他途径查找,然后导入到Unity3D中使其变成可用元素。
Unity3D也支持自制animation动画,在Unity3D菜单栏的“windows”中选择animation窗口进行动画的自制,将animation动画挂在Gameobject上可实现Gameobject的位移、放大缩小、渐变或其他更高级的效果。
2-4animation制作工具
游戏中的各种图标Texture文件需要制作成Atlas图集的形式,Unity3D提供atlasmaker工具,将想要的图标素材导入到Unity3D中,然后利用atlasmaker工具将素材更新到所需要的图集里。
2-5atlasmaker界面
6.Camera(镜头)
正如电影导演手中的摄像机将故事呈现给观众一样,Unity3D中的Camera用于将游戏画面呈现给玩家,即Game窗口中的内容。
一个视图中至少应该放置一个镜头,否则呈现出来的画面只会是一片漆黑。
镜头的放置位置也决定了游戏体验,镜头应尽量放置在能看清整个场景的位置,距离适中,太近的镜头视距太短看不到远方的路障,太远的镜头看不清前方的物体,影响游戏体验。
Unity3D中新建的工程都有提供一个maincamera镜头。
另外,可以给镜头添加一些功能,如animation动画,在镜头上添加具有短位移的animation动画可以使其抖动。
(二)NGUI
NGUI为Unity3D的一款界面UI设计插件,使用NGUI可以轻松完成大部分2D界面设计,下面是NGUI的一些基础控件及关键点:
1.Sprite(图片):
如果要将一张图片放在界面中,需要选中一个Gameobject,然后添加UIsprite脚本(或直接使用NGUI创建一个sprite控件),该对象的inspector窗口中即出现sprite控件栏。
如图1-2所示,点击Atlas选择图集,后面为选择图集的具体图片。
2-6UISprite脚本界面
2.Label(文本框):
使用UIlabel脚本在界面中添加文字,文字颜色、大小、位置均可自己控制,如图2-7所示:
2-7UILabel脚本界面
3.Button(按钮):
其实Button控件是由sprite、label和collider碰撞器组合而成的,应该包含一个父Gameobject,和三个子Gameobject。
Collider为碰撞器,用于响应外界对此块区域的操作。
当点击此块区域时,将执行某些处理,可由脚本控制。
这三个也可全部放在一个Gameobject中,但是,这样做的缺点就是他们共用一个tranform,复用性不强。
4.Tween(动画):
即动画效果,包含颜色变化、大小变化、旋转变化、深浅变化等,类似animation动画,差别在于tween为写死的动画,没法像animation动画那样自由调节。
可挂在任何对象上,并且需要选择如何触发此动画。
如点击一下Button触发顶部按钮由透明变成正常颜色,这样就实现了简单的Tween动画功能。
5.Depth(深度):
界面为2D界面,没法避免窗口、图片重叠的现象,depth可以有效的将各个Gameobject分层处理。
Depth值越低代表此物体越底层,将被depth值比他高的Gameobject遮挡住。
6.NGUI还提供一些例如滑动条、输入框、下拉栏等更高级的控件,在本文不涉及到,在这里不做阐述。
三、
游戏需求分析
(一)游戏基本介绍
本毕设为一款使用Unity3D引擎制作实现的3D格斗游戏,脚本使用C#编程语言编写,主角为大家耳熟能详的钢铁侠,游戏整体风格偏机甲类,主要玩法即格斗。
3-1战斗界面
战斗界面如图3-1所示,玩家通过控制界面左侧的方向键(已隐藏)进行主角前后左右的移动,通过点击右边的攻击键实施攻击。
游戏将给玩家带来超炫的格斗动作,逼真的打击感,通过较为真实的打击感,让玩家在游戏中感受快乐。
(二)需求分析
设计游戏之前需要对游戏进行全面的需求分析[4],明确设计方向,然后写游戏的设计说明书,界面设计及一些功能性的东西可以参考市面上比较热门的游戏的做法,游戏将依据此份说明书进行设计。
说明书应该包含游戏各个界面的介绍、每个按钮功能、以及游戏中每一步操作对应的响应方式。
需求分析完需要构建游戏的系统框架,使用导图的方式将游戏的各个系统、模块一目了然的呈现出来。
如图3-2所示,利用MVC框架将游戏的各个系统界面联系起来。
3-2游戏系统框架
(三)场景模型的搭建
一个可用的场景模型包含两个方面的属性,一方面是模型,另一方面是阻挡。
单纯从可用性来说模型一点用处都没有,但是为了让玩家知道哪边可以踩、哪边是墙壁、哪边会产生碰撞,就必须设置模型。
阻挡用于限制玩家的活动区域,也就是配合模型来使用的。
可以说,没有阻挡的模型是不可用的,没有模型的阻挡是不具生命力的,两者密不可分。
3-3一个模型所包含的内容
如图3-3所示,inspector窗口中Cube(MeshFilter)为模型组件,BoxCollider为阻挡碰撞器,Center为此碰撞器的坐标位置,Size为碰撞器尺寸。
MeshRenderer是材质组件,用于帮模型添加材质、贴图。
3-4较为成形的场景模型
1.模型
众所周知,点成线,线成面,面成体。
模型由面组合而成,模型的制作可通过3DSMAX等建模软件实现,面数越多的模型越精致,但是对系统性能的要求也越高。
游戏画面是由计算机CUP和GPU实时处理演算出来的图像,面数越多对GPU的压力越大,易导致游戏画面卡,运行不流畅等情况,所以尽量选择低面数模型、优化所用模型材质能够大幅提高游戏性能。
Unity3D提供一些简单的3D模型供玩家使用,如正方体、球体、圆柱体等多种模型,实际上,他们是属于添加了模型组件的Gameobject,这些模型可用于当做战斗场景,可以通过调节这些模型的长宽高来匹配场景人物模型的大小。
2.阻挡
Unity3D自带一些简单形状的阻挡,如boxcollider、meshcollider碰撞器。
阻挡碰撞器只是个组件,想运用它必须放在Gameobject中实现,因为这些都是体阻挡,如果想要面阻挡,需把该阻挡对应的Gameobject中tranform的S坐标其中一个值改成0就行了。
设置场景的各个方向阻挡,需要特别注意的是,给主角和NPC站立的那一面阻挡需要将阻挡对应Gameobject属性改成“ground”,否则角色无法站在阻挡上。
设置四周阻挡,防止主角掉出场景外,四周阻挡必须足够高,超过角色所能跳跃的高度,防止主角跳出阻挡。
(1)碰撞检测
游戏过程中经常会出现主角被墙壁所阻断,撞到NPC将其推开等情况,这些都是属于碰撞检测,Unity3D提供例如boxcollider(长方体)、meshcollider(圆柱体)等碰撞检测器[5],当检测到碰撞器时,调用OnControllerColliderHit()控制碰撞器碰撞函数,防止游戏过程中人物相互穿越、穿墙等情况的发生,有利于提高游戏的真实性。
想要添加更多复杂的碰撞检测器,可通过3DSMAX等建模软件制作完成再添加到Unity3D中来。
(四)人物动作说明
因为动作与模型的高度长短相关联,所以动作一般都是和模型绑定在一起,两个模型骨骼(高度、肢体长度)大体一样,可进行动作的复用,人物动作可以用maya等动作处理软件实现,动作应包含最基本的走路、攻击、跳跃等基本动作。
本毕设所用模型、动作均来源于网络,且模型高度、骨架一样,动作复用同一套,节约开发成本,缩短开发周期。
3-5动作文件脚本内容
1.模型动作的导入
将已制作好的模型动作文件导入到Unity3D引擎中,导入格式为FBX,并将模型所对应的贴图材质一起导入到Unity3D中。
值得注意的是,无论之前在3DSMAX软件中的模型有没有材质,导入到Unity3D后,模型都是没有材质的。
Unity3D配备了强大的编写材质和阴影的工具(ShaderLab),导入模型后,需要手动在Unity里面重新设置一遍材质贴图。
2.动作处理
导入到Unity3D中的FBX动作文件其实就是带序列帧的动画文件,它包含动作的所有动画,并标注出每一个动作的帧数范围。
但是这些动画没法直接拿出来使用,需要进行脚本控制处理[6]。
根据导入的FBX动作文件
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Unity3D 平台 格斗游戏 设计 毕业论文
![提示](https://static.bdocx.com/images/bang_tan.gif)