基于Unity3D的消防员角色扮演游戏的设计与实现.docx
- 文档编号:29441573
- 上传时间:2023-07-23
- 格式:DOCX
- 页数:21
- 大小:33.88KB
基于Unity3D的消防员角色扮演游戏的设计与实现.docx
《基于Unity3D的消防员角色扮演游戏的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于Unity3D的消防员角色扮演游戏的设计与实现.docx(21页珍藏版)》请在冰豆网上搜索。
基于Unity3D的消防员角色扮演游戏的设计与实现
基于Unity3D的消防员角色扮演游戏的设计与实现
基于Unity3D的消防员角色扮演游戏的设计与实现
v>
基于Unity3D的消防员角色扮演游戏的设计与实现DesignandimplementationoffiremanroleplayinggamebasedonUnity3d内容摘要近几年来,市场上的科普游戏越来越受人们重视,而在现有的市场上,关于消防员的游戏普遍都是以2D或2.5D画面为主,并且皆是玩家简单地操作游戏人物进行灭火,科普效果并不显著。
因此,开发一款以第一人称为视角并且加入训练元素的消防员角色扮演类游戏十分有意义。
本次课题通过收集消防员的日常训练资料、真实的火灾危害数据以及救援方式数据,再结合影视作品、书籍等方向进行研究探讨,从而制作具有一定真实性的游戏关卡。
本次课题研究开发的游戏是一款基于Unity3D游戏开发引擎开发的第一人称视角的消防员角色扮演类游戏,游戏首先以地形编辑器Terrain制作游戏地形,以模型制作软件3DStudioMax制作以及修改模型加以辅助,结合Unity引擎自带的粒子效果控件,创造具有真实感的火灾现场场景。
在游戏中的人物操作则是通过运用Unity3D游戏开发引擎中自带的角色控制器CharacterController实现人物移动控制以及视角控制。
再利用射线检测碰
撞、碰撞触发器算法以及Enum算法等方式实现了在游戏中不同的状态拥有着不同的效果发生,提高了游戏的可玩性与真实性。
最后结合设定好的流程,使玩家更好地代入消防员角色之中。
综上所述,本次课题研究开发的游戏具有完整性以及创新性,具有较高的研讨价值及运用价值和学习价值。
关键词:
Unity3D消防员角色扮演真实学习AbstractInrecentyears,popularsciencegamesinthemarkethaveattractedmoreandmoreattentionfrompeople.However,intheexistingmarket,firefightergamesaregenerallybasedon2Dor2.5dpictures,andplayerssimplyoperatethegamecharacterstoputoutthefire.Thepopularscienceeffectisnotsignificant.Therefore,itmakessensetodevelopafirefighterrole-playinggamewiththefirstpersonastheperspectiveandtrainingelements.Thisprojectcollectsthedailytrainingdataoffirefighters,therealdataoffirehazardsandthedataofrescuemethods,andthenconductsresearchanddiscussionincombinationwithfilmandtelevisionworks,booksandother
directions,soastomakeacertainauthenticityofthegamelevel.ThistopicresearchanddevelopmentofthegameisabasedonUnity3Dgameenginedevelopmentfirefightersrole-playinggameswithafirst-personperspective,gamefirstwiththeTerraineditorTerrainlandform,modelmakingsoftware3dStudioMaxassistproductionandmodifythemodel,combinedwiththeUnityenginecontrolsownparticleeffect,creatingrealisticfirescenarios.ThecharactermanipulationinthegameistoachievethecharactermovementcontrolandperspectivecontrolthroughtheuseoftheCharacterControllerbuiltintotheUnity3Dgamedevelopmentengine.Bymeansofraydetectioncollision,collisiontriggeralgorithmandEnumalgorithm,differenteffectsareachievedindifferentstatesofthegame,whichfurtherimprovestheplayabilityandauthenticityofthegame.
Finally,combinedwiththesetprocess,maketheplayerbetterintothefiremanrole.Tosumup,thegameresearchedanddevelopedinthisprojecthasintegrityandinnovation,andhashighresearchvalue,applicationvalueandlearningvalue.Keywords:
UnityFiremenRoleplayAuthenticStudy目录第一章绪论11.1本课题的研究背景与意义11.2消防员游戏在国内外的研究现况11.2.1消防员游戏在国内的研究
现况11.2.2消防员游戏在国外的研究现况21.3本次课题的研究设计使用的
开发软件31.3.1Unity3D31.3.23DStudioMax31.3.3Microsoft
VisualStudio31.4本次课题的主要研究内容4第二章游戏的需求分析与
总体设计方案52.1消防员角色扮演游戏的需求分析52.1.1玩家需求分析
52.1.2功能需求分析52.1.2性能需求分析62.2游戏的总体设计方案7
2.2.1游戏结构设计方案72.2.2总体结构设计方案7第三章游戏详细设计与实现103.1角色控制模块103.1.1角色移动控制103.1.2角色视角控制113.1.3鼠标锁定与解锁123.2火焰效果模块123.2.1火焰部署12
3.2.2灭火功能实现133.3烟雾效果模块153.4灭火器模块183.4.1灭火器模型设置183.4.2灭火器发射灭火剂功能实现183.4.3多种类灭火器问题193.4.4灭火器拾取与放下功能实现203.5氧气与健康值效果模块22
3.6游戏UI模块23第四章游戏测试254.1功能测试254.2性能测试27
4.3游戏测试结论27第五章总结与展望285.1总结285.2展望28参考文献30致谢31第一章绪论1.1本课题的研究背景与意义本次课题研究是运用游戏编程、Unity3D游戏开发引擎开发、3DStudioMax模型制作软件制作和修改模型以及计算机图形学等相关技术实现的一个“寓教于乐”的第一人称消防员角色扮演单机游戏项目。
其中带有边玩游戏以及边学习知识等特点:
首先玩家扮演的是一名消防员,任务包括灭火任务以及救援任务,在这方面使用第一人称能使玩家更好的代入游戏当中;
其次是玩家在游戏过程中,可以通过游戏中自带的训练以及关卡设置的机关中学习到一定的日常消防知识;
再者,在现有的消防题材游戏当中,分为两种:
一种是网页的儿童类小游戏,简单来说就是用鼠标点击火焰图标灭火,科普性极低;
第二种则是以老牌IP“消防第六分队”“急难先锋”等策略性游戏,科普性
高,但是运用的皆是2.5D界面,职业代入感较差。
因此,本次课题研究拥有着极高的研究价值以及市场价值。
1.2消防员游戏在国内外的研究现况1.2.1消防员游戏在国内的研究现况消防员游戏目前在国内并不得到重视,在网上搜索得到的中国消防员的游戏基本皆为网页小游戏。
以XX搜索引擎为例,搜索消防员游戏,出现的基本都为
4399、7K7K等小游戏网站提供的网页小游戏,其中的游戏基本为简单的点击火焰标志即可灭火,无论什么火情都是可以用水进行灭火。
操作简单,但是科普性极低,而且无论什么火情都可以用水进行灭火是一个极其严重的错误,在一些特殊的火情当中,使用水去灭火很可能会造成更加大的危险。
这很容易使得我国玩家单纯的以为水可以灭万火,导致在火灾当中造成二次伤害。
以下用国内小游戏举例:
奇想咕噜团-勇敢消防员。
玩家使用鼠标操作角色,鼠标点击建筑中的火焰标志即可喷出水柱进行灭火。
可玩性不高,科普性极低。
奇想咕噜团-勇敢消防员游戏截图如下图1-1所示:
图1-1国内消防小游戏《奇想咕噜团-勇敢消防员》游戏截图1.2.2消防员游戏在国外的研究现况国外消防员题材游戏主要以老牌IP“消防第六分
队”“急难先锋”等策略性游戏为主,玩家主要是上帝视角2.5D控制角色进行救援任务,科普性极高,可玩性也高,但是玩家的代入性却不高。
以“消防第六分队”游戏为例,玩家需要控制的是多名消防员进行救援任务,但是在游戏的过程中,很容易专注于一个任务点的救援任务而忽略某个任务点的消防队
员,导致其死亡。
当消防员出现危险时,游戏小地图会出现一个红色感叹号,但是在某处即将发生爆炸时,地图也是出现红色感叹号,玩家很容易将二者搞混,导致角色死亡。
虽然此类游戏科普性极高,将各种火情的灭火条件都一一区分,例如水是无法熄灭油罐车的火情等等,但是如果是采用第一人称的话,玩家可以更好的代入这个职业当中,从而有更加深刻的印象。
消防第六分队游戏截图如下图1-2所示:
图1-2《消防第六分队》游戏截图1.3本次课题的研究设计使用的开发软件
1.3.1Unity3D在当今电子游戏越来越得到人们重视的社会,Unity3D也成为了绝大多数游戏开发者首选的开发3D引擎,虽然名字中带着3D二字,但是Unity3D也在2D游戏开发上有着极其优秀的表现。
首先Unity3D采用的ALLINONE设计思路,使得开发者使用其开发游戏时极其方便,它将所有的编辑器集于一身,这可以让你对模型操作时只需要简单的选中模型、右键、弹出材质编辑器,然后对它的材质,碰撞体,结构等进行操作即可,让人觉得是在操作模型本身。
其次Unity3D能够在编辑后立刻运行,查看效果,也可以在运行时修改游戏中的参数,可以实时看到你所作的调整,而当你停止运行时,你在游戏中所修改的参数也将失效,避免因为调整而忘记自己最开始所设置的参数,称之为“所见即所得”。
再者Unity3D拥有独一无二的开发者商城—AssetStone,我们可以在这商城中购买到其他开发者开发的插件,可以用来借鉴使得我们得到更好的思路以摆脱当前所面临的困境,这是在其他游戏开发引擎中所不具备的特点之一。
1.3.23DStudioMax3dsMAX软件是由Discreet公司开发的用于打造三维动画渲染的软件,后来被广泛应用于游戏开发建模以及建筑设计和影视行业等领域。
本次课题研究开发的游戏也将借助于3dsMAX强大且灵活的模型制作能
力,对游戏中出现的楼房、场景中燃烧的物品以及相关的消防设备等模型进行搭建。
1.3.3MicrosoftVisualStudio本次课题研究开发的游戏是基于C#语言所开发的,因此利用的开发工具集是微软公司开发VisualStudio。
VisualStudio配合Unity游戏引擎开发游戏的最佳搭档,能够利用其强大的调试功能来帮助使用者调试Unity游戏而快速发现问题。
1.4本次课题的主要研究内容综合前文论述,本次课题是以Unity3D游戏开发引擎作为开发工具,并以3DStudioMax模型制作软件为技术辅佐,研发的一款第一人称实现消防训练、现场灭火以及火场救出人质等工作从而完成救援使命的消防员角色扮演游戏。
第二章游戏的需求分析与总体设计方案2.1消防员角色扮演游戏的需求分析
2.1.1玩家需求分析一个游戏的好坏,在于玩家觉得这款游戏是否好玩,而好玩二字无非体现在这款游戏能否让玩家在其中体验到:
乐趣、吸引力、控制力以及挑战性,因此玩家最直观的需求也是以上几点。
所以此游戏要求拥有1.简单方便的操作模式;
2.真实的火灾体验感;
3.拥有挑战性的关卡。
这样一来才能够让玩家有欲望玩下去,而不会半途而废。
2.1.2功能需求分析本游戏采用的视角为第一人称,结合消防员这一职业,需要使得玩家拥有面对灾难的真实感觉,必须紧紧围绕“真实”二字来实现游戏的整体。
首先,为了保证玩家在游戏初期训练关卡中能够快速学习游戏的控制方式,需要玩家与游戏的交互方式简单方便,并且有一定的交互反馈能让玩家体验到。
其次,由于本游戏采用的是第一人称视角,因此在游戏关卡中所设置的“火焰效果”以及“烟雾效果”必须要真实,风格不可以为卡通风或者太过于假,拥有贴近现实的“火焰效果”以及“烟雾效果”能够极大程度的提升玩家对游戏的体验感。
但是粒子效果也需要“适当”,不能因为追求华丽而对游戏性能造成影响。
最后,还是围绕“真实”二字,制作氧气量的消耗。
经过分析,在很多的救援案例中,百分之六十的消防员都是因为缺氧而导致伤亡,火焰燃耗会剧烈消耗氧气,再加上现场的燃烧产物有一氧化碳以及二氧化碳,这些都会造成消防员缺氧。
因此打造一个氧气量消耗是十分必要的,能够极大提升游戏真实感。
综上所述,将本次课题开发的游戏的功能需求大致分为以下几个模块:
(1)人机交互:
玩家通过使用键盘的WSAD四键来控制人物移动,空格键控制人物跳跃,再通过几个设置的按键进行触发设定好的效果。
鼠标控制人物视角,左键控制激活水枪发射灭火剂、灭火器发射灭火剂等效果。
(2)粒子效果:
火焰粒子效果与烟雾粒子效果必须做到真实。
不同的火焰需要区分开来,只有使用与之相对应的灭火器才能完成灭火操作;
而烟雾则需要做到当火焰被熄灭时从燃烧物体上出现,以此提升玩家的真实感。
(3)物理效果:
人物在特定场景内会慢慢消耗事先设定好的氧气量,并且在氧气量消耗殆尽时会降低身体健康值,当身体健康值降为0时,会造成角色死
亡,任务失败。
游戏大体功能需求分析如下图2-1所示:
图2-1游戏大体功能需求分析图2.1.2性能需求分析一款好的游戏,除了它的可玩性要高、内容要足够丰富以外,还需要控制它对机器性能的损耗,如果这款游戏不能够流畅的运行,那么将会极大程度的降低玩家的游戏体验。
但是,在本次课题研究开发的游戏当中,制作真实的火灾现场必定会使用很多的粒子效果,而过多的粒子效果必然会损耗较多的机器性能,从而影响游戏性能。
因此,在面对这些情况,必须在其它功能方面尽可能选择对机器性能损耗较低的方法实现。
2.2游戏的总体设计方案2.2.1游戏结构设计方案本次课题研究开发的游戏结构以简单方便为主,使得玩家玩家达到快速上手游戏的目的。
本文游戏结构简单分为开始游戏→游戏主界面→进行训练/直接开始正式任务→任务成功/任务失败→重新开始任务/退出任务→主界面→选择关卡/退出游戏,游戏结构详情如下图2-2所示。
图2-2游戏结构图2.2.2总体结构设计方案结合上文所述,可以得出本次课题研究开发的游戏总体模块的架构如下图所示:
图2-3游戏总体模块架构图对于本次课题研究开发的游戏中各个模块的具体分析如下:
(1)人机交互模块:
游戏中的主界面、开始游戏界面以及游戏进行时的UI界面均由Unity3D游戏开发引擎中自带的UGUI模块来设计,使用C#脚本来监听识别玩家的操作,再通过UI的变化告知玩家此操作对游戏带来的影响,以此完成一系列的人机交互。
在交互反馈方面,使用C#脚本编辑模块监听识别玩家的键盘输入或者鼠标点击事件,通过UI的颜色变化或者放大缩小又或者UI颜色递减等方式与玩家进行交互,例如当玩家点击开始任务按钮可以通过按钮的变化来告知玩家是否已经点击到按钮;
而在游戏训练关卡中,会以一部分字牌方式来提醒玩家。
(2)游戏功能模块:
游戏场景将使用由3dsMAX制作或修改的游戏建筑模型,配合Unity游戏开发引擎自带的Terrain地形编辑组件搭建完成。
在救援现场建筑模块中,建筑模型的表面将配合火焰粒子效果以及烟雾粒子效果而制成真实的灾难现场效果。
在建筑内部模块中,同样会添加火焰粒子效果以及烟雾粒子效果,同时再加入Unity游戏开发引擎中自带的FogLight设定来增加烟雾降低玩家可见度的效果。
当玩家进入特定区域之后,氧气剩余量或者身体健康值会发生递减变化来告知玩家在此区域呆久可能会有生命危险;
当玩家使用消防器材进行灭火时会以粒子效果变化来告知玩家此操作的是否有效,以达到提高玩家的游戏真实体验。
第三章游戏详细设计与实现3.1角色控制模块3.1.1角色移动控制在本次课题研究开发的游戏当中,角色操作模式与一般的第一人称射击类游戏操作方式大同小异,均是以键盘操作以及鼠标操作作为输入方式来对游戏事件进行触发以及操作。
因此在本游戏中,人物移动是以WSAD控制前进、后退、向左以及向右,空格控制跳跃。
在基于Unity3D游戏开发引擎开发的游戏当中,常见的控制角色移动方法有几种。
第一种方法是直接修改角色的transform.position属性,可以利用if语句检测玩家的键盘输入来修改相对应方向的transform.position属性,以达到角色移动的目的,但这种方法有个缺点,就是角色移动起来会让人有一种卡顿的感觉;
第二种是使用刚体Rigidbody组件,通过在相对应的方向施加力的作用来带动角色的移动,然而这种方法是具备物理特性的,意味着当你松开按键的时候,角色不会立即停下,而是会继续滑动一部分距离;
第三种是使用Unity3D游戏开发引擎自带的角色控制器CharacterController,调用Move方法就可以实现角色的移动以及跳跃。
在本次课题研究开发的游戏当中,为了减少代码开发量,我们选择使用第三种方法来实现角色移动。
角色移动控制脚本核心代码如下图3-1所示:
图3-1角色移动控制脚本3.1.2角色视角控制在本游戏中,角色的的视觉控制完全由鼠标完成,使用鼠标控制玩家前进的方向以及瞄准火源等操作。
同时,与上文3.1.1同理,本游戏开发使用的视角控制代码也是Unity3D游戏开发引擎自带的MouseLook脚本。
角色视角控制脚本核心代码如下图3-2所示:
图3-2角色视角控制脚本3.1.3鼠标锁定与解锁考虑到玩家有时候需要使用鼠标对游戏的设置进行操作,而鼠标又是角色视角的控制器,这时候就需要增加一个操作可以将鼠标解锁出来,使得玩家可以进行点击画面的设置UI,进入设置界面进行操作。
首先定义一个Bool值为鼠标的默认状态,再使用if语句检测玩家的鼠标解锁操作,改变这个Bool值,使鼠标显示出来,当玩家操作完成之后,再将此Bool值改回默认值,隐藏鼠标。
3.2火焰效果模块3.2.1火焰部署在游戏中,我们需要布置大量的火焰粒子,用以呈现火灾的效果,但并不只是简单将火焰粒子拖放至游戏场景当中,这样子我们只能看到粒子效果而无法检测到粒子效果,因此我们需要使用一些方法使其能够被检测到。
在本次课题研究开发的游戏当中,我们先创建一个Cube,然后根据我们所需部署火焰的场景位置改变它的形状大小,然后将我们所需要使用的火焰粒子添加至Cube当中作为其子类,再将Cube的Layer层修改为我们相对应灭火器检测的层,例如是用水灭的火焰层就选择成
“WaterColl”,为下文3.3.1中灭火功能实现检测火焰作为铺垫,然后取消勾选Cube的MeshRenderer用以实现隐藏,最后在父类上添加下文3.3.1中灭火功能用以实现“灭火”效果的代码即可。
这样一来,我们能够被检测到的火焰就完成了,再拖放至场景中部署即可。
部署效果如下图3-3所示:
图3-3将Cube部署在场景中3.2.2灭火功能实现在现实生活中,消防员实现熄灭火焰,无非就是使用能够灭火的物质,将其浇到火焰之上使之熄灭。
同理,在游戏当中亦是如此,我们使用水粒子效果“浇”到火焰粒子效果上使火焰粒子效果慢慢消失从而达到灭火效果的实现。
在这里实现灭火效果功能的方法有两种,第一种是粒子碰撞器,使用水粒子去触碰火粒子,再通过C#脚本编辑模块调用C#脚本去控制火焰粒子的生命周期或其他参数慢慢减小至0而实现灭火效果。
第二种是通过射线碰撞检测玩家点击的物体是否为火焰粒子,如果是则通过C#脚本编辑模块调用C#脚本去控制火焰粒子的其中一个属性参数慢慢减小至0而实现灭火效果,如果玩家点击的不是火焰粒子,则不做任何操作。
在第一种方法当中,使用粒子碰撞器会造成机器性能的大大损耗,而第二种方法则可以避免这种情况的发生。
在本次课题研究开发的游戏当中,从游戏项目性能优化方面考虑,我们将选择第二种方法,以此来减小游戏对机器性能的损耗。
在游戏中玩家实现灭火效果,需要将鼠标准心指向火焰,其次是按下鼠标左键发射灭火剂击中火焰,最后灭火剂“浇灭”火焰。
因此在本次课题研究开发的游戏中实现灭火的功能设计如下:
(1)粒子效果的控制:
在游戏中实现灭火,其实就相当于让这个火焰粒子效果“消失”,而做到让这个粒子效果消失,我们可以修改粒子效果中的一些属性参数,例如“StartLifetime”、“SimulationSpeed”以及“MaxParticles”,而在本游戏中,我们选择修改的粒子效果属性是“MaxParticles”。
首先创建一个C#脚本命名为FirePoint,用以控制游戏中部署的火焰粒子,使用ParticleSystem[]方法定义一个数组ParticalArr用以管理粒子数组,其次再定义一个int值ReduceRate用以控制粒子减小的速率,最后使用结合时间差值与粒子减小速率的乘积——Time.time*ReduceRate来控制粒子效果中“MaxParticles”的变化。
具体效果实现代码FirePoint如下:
//获取粒子数组publicParticleSystem[]ParticalArr;//火焰粒子减小速率publicintReduceRate=3;privatevoidStart(){}privatevoidUpdate(){}//当准心指向火焰时,火焰开始慢慢
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Unity3D 消防员 角色扮演 游戏 设计 实现