基于Unity3D的仿真火灾事故的预防和处理的设计与实现毕业论文.docx

上传人:b****3 文档编号:4970397 上传时间:2022-12-12 格式:DOCX 页数:30 大小:3.05MB
下载 相关 举报
基于Unity3D的仿真火灾事故的预防和处理的设计与实现毕业论文.docx_第1页
第1页 / 共30页
基于Unity3D的仿真火灾事故的预防和处理的设计与实现毕业论文.docx_第2页
第2页 / 共30页
基于Unity3D的仿真火灾事故的预防和处理的设计与实现毕业论文.docx_第3页
第3页 / 共30页
基于Unity3D的仿真火灾事故的预防和处理的设计与实现毕业论文.docx_第4页
第4页 / 共30页
基于Unity3D的仿真火灾事故的预防和处理的设计与实现毕业论文.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

基于Unity3D的仿真火灾事故的预防和处理的设计与实现毕业论文.docx

《基于Unity3D的仿真火灾事故的预防和处理的设计与实现毕业论文.docx》由会员分享,可在线阅读,更多相关《基于Unity3D的仿真火灾事故的预防和处理的设计与实现毕业论文.docx(30页珍藏版)》请在冰豆网上搜索。

基于Unity3D的仿真火灾事故的预防和处理的设计与实现毕业论文.docx

基于Unity3D的仿真火灾事故的预防和处理的设计与实现毕业论文

---文档均为word文档,下载后可直接编辑使用亦可打印---

摘要

科技的日新月异,计算机成了人类生活中不可或缺的一部分,说到计算机,游戏是不得不说的是其中的一个联想词,游戏本身所拥有的趣味性以及娱乐性,能大大的激发人类的兴趣。

我们常说兴趣是学习最好的老师,那游戏能否和学习结合起来呢?

毋庸置疑,答案是肯定的。

教育类游戏早就已经掀起了一股热潮,在游戏中学习,在趣味中学习,能够让学习者沉浸在知识的海洋中。

更能提高学习的效率和深刻所学的内容,加深印象。

因此,教育类游戏在当今社会拥有无法估量的应用价值。

本课题的游戏设计是基于Unity3D游戏引擎,与火灾逃生这个生活实际问题所联系而开发的逃生知识类小游戏。

火灾是令人恐惧的,因为火灾自我救援的意识和方法较为匮乏,每年有大量的人因为火灾发生时没有有效的逃生方法永远的失去了宝贵的生命。

在本课题中,虚拟仿真真实火灾情况下我们该怎么做,在最佳自救时间内用有效且安全的方法逃离火灾现场,实现自救,是本课题的目的所在。

游戏、生活、学习,三者结合的前景已是一片大好,仿真类游戏来源于生活,而有益于生活,一种新颖且有趣的学习方式是很容易被人们接受的。

在游戏中“身临其境”的学习火灾知识,安全无风险,却能学到真正有用的火灾救援知识。

本课题将会介绍设计游戏的开发引擎、人物建模、场景设计以及人物动作、游戏玩法、游戏逻辑等等所用到的技术,进行一系列详细分析。

关键词:

Unity3D学习虚拟仿真火灾游戏

 

Abstract

Withtherapiddevelopmentofscienceandtechnology,thecomputerhasbecomeanindispensablepartofhumanlife.Speakingofthecomputer,thegameisoneoftheassociativewords.Thefunandentertainmentofthegameitselfcangreatlystimulatehumaninterest.Weoftensaythatinterestisthebestteacherforlearning.Cangamesbecombinedwithlearning?

Theanswer,ofcourse,isyes.Educationalgameshavelongbeenahottrend.Learningingames,learninginfun,canimmerselearnersintheoceanofknowledge.Morecanimprovetheefficiencyoflearninganddeeplearningcontent,deepentheimpression.Therefore,educationalgameshaveinestimableapplicationvalueintoday'ssociety.

ThegamedesignofthistopicisbasedontheUnity3Dgameengine,andthefireescape,apracticalproblemoflifeandthedevelopmentofescapeknowledgesmallgame.Fireisfrighteningbecauseofthelackofawarenessandmethodsofself-rescue.Everyyear,alargenumberofpeoplelosetheirpreciouslivesforeverbecausethereisnoeffectivewaytoescapewhenthefirebreaksout.Inthistopic,howshouldwedointhecaseofvirtualsimulationofrealfire?

Thepurposeofthistopicistoescapefromthefiresceneinaneffectiveandsafewaywithinthebesttimeforself-rescue,soastoachieveself-rescue.

Game,life,learning,theprospectsofthecombinationofthethreehasbeenagood,simulationgamesfromlife,andgoodforlife,anewandinterestingwayoflearningiseasytobeaccepted.Inthegame"immersive"tolearnfireknowledge,safetywithoutrisk,butcanlearnreallyusefulfirerescueknowledge.Thistopicwillintroducethedevelopmentengine,charactermodeling,scenedesignandthetechniquesusedincharacteraction,gameplay,gamelogic,etc.,andmakeaseriesofdetailedanalysis.

Keywords:

Unity3Dlearningvirtualsimulationfiregame

 

第一章绪论

1.1选题的目的及意义

时代在进步,人们的生活水平日渐提高,娱乐项目已经成为了生活中的必需品,作为娱乐项目其中之一的代表作——电子游戏,已经发展成了一颗参天大树,深受各个年龄段人们的喜爱与追捧。

1952年,电子游戏横空出世。

世界上第一款电子游戏被剑桥大学所创作,这个游戏就是家喻户晓的井字棋游戏,当时这款电子游戏是在真空管电脑平台上运行的,是人类电子游戏史上的一次里程碑。

发展至今,游戏随着时间走过了一段又一段的旅行,2019年,中国游戏市场实际销售收入2330.2亿元,增速为8.7%,游戏市场成为一个重要经济体之一,现今制作游戏都会用到游戏引擎,作为游戏引擎的翘楚之一,Unity,受到了许许多多游戏制作者的青睐。

那这个游戏引擎创造过什么特别优秀的游戏呢?

那就得谈到现在手游市场上最火爆的一款游戏了,它就是王者荣耀。

截至2019年5月,王者荣耀的用户数达2亿。

数字足以体现这个游戏的热门程度,从侧面也可以反馈出,Unity这个游戏引擎的强大。

电子信息科技时代迎来了前所未有的大好景象,就拿我们国家国家来说,学习和教育都是科技的第一生产力,那我们试想,游戏和学习是否能强强联合呢?

答案是肯定的,现在已经有许许多多的知识类游戏已经诞生,如《我们相距十万光年》、《欧几里德几何Euclidea》、《计算城堡》,这一类游戏确实给学习者们提供了许多优势,在快乐的游戏中学习到知识,完全可以克服传统教学所带来的枯燥无味,导致学习者丧失学习的兴趣,产生厌学恶学的消极态度。

“学习游戏,游戏学习”的方式终将会被推崇,乐学乐教,在快乐中学习。

1.2研究背景

本次课题研究的是与消防知识有关的火灾逃生游戏,就我国来说,2019年火灾数高达23.3万起,死亡人数为1335人,受伤人数为837人,财产损失35.12亿元。

火是无情的,很容易就能把生命化为灰烬,因为火灾,每年都会又有许许多多的生命因此消逝,大多数都是因为没有有效且及时的火灾自我救援意识而被大火吞噬。

我国在防火安全普及上进展都相当的好,社区都会不定时组织线下的防火安全知识。

但是大多数都是局限于指导如何使用灭火器,其实,最主要最危险的还是高楼层着火,因为火势一旦蔓延,大多数人因为没有规范的逃生知识而葬身火海。

火灾刚起时,灭火器往往是最有效的手段,但是火势变大后,灭火器的作用是微乎其微的,这时候用有效的方法第一时间逃离现场才是正确的,火灾中产生的浓烟是造成死亡的第一要素,许多人身亡并不是第一时间被火湮灭,而是被烟气熏的失去意识,等待他的只有死亡了。

因为高楼层这种真实的模拟演练需要的条件是非常多的,因为不具备各种条件,这种实战的经验真的是少之又少,这时候,结合现实的虚拟游戏就起到了举足轻重的作用。

火灾逃生游戏具有以下几个优势:

1、在高楼层地带不方便展开实地逃生演练时用PC即可轻松演练2、实战不可避免的要用到真实的火,火毕竟是具有一定的危险性的,但是虚拟游戏里的火却没有任何危险。

3、游戏的趣味性会让学习消防知识的人印象更加深刻,达到事半功倍的效果。

4、虚拟游戏的操作

运用到现实生活中也一样可行。

图1-1《VR火灾逃生应急演练》游戏截图

1.3研究实现内容

此次研究内容主要使用Unity3D开发引擎与插件NGUI所设计的第一人称室内仿真火灾逃生游戏,此游戏的设计背景是当火灾发生时,根据火势大小情况判断,用各种有效手段第一时间进行自救,本游戏搭建了现代楼层室内环境,实现不同关卡使用室内现有道具,根据游戏内提示进行有效逃生。

本游戏的UI界面以及人物交互是使用Unity中的插件NGUI实现的,游戏的视角为第一人称,在人物方面会挂载FPS第一人称的脚本用于控制人物的移动;关卡之间使用的场景都是相同的,但是定位到具体某一关卡时,会有一些小小的改动,实现此模块需要与NGUI的Button相联系。

回到游戏中,场景的搭建也是很重要的,如物体的摆放以及整个游戏地图的布局等;既然是火灾游戏,火和烟气是重要的一环,在Unity游戏模块中,以上两种物体属于粒子系统模块;在游戏中将会有各种不同动作,该模块将会使用Tween动画具体实现;最重要的一环当然属于游戏的交互模块了,具体细分如下:

UI界面交互、人物交互、碰撞交互、点击交互和其他交互。

游戏开始界面、得分情况、倒计时、血条都将会用到NUGI实现,具体人物以及游戏逻辑尽量遵循人类思考方式进行,例如错误提示,失败条件和成功条件的不同将会影响玩家对游戏的体验感。

火灾逃生类游戏是让玩家学习逃生知识的,交互以及逻辑趋于简单易操作。

 

第二章Unity游戏引擎和开发工具介绍

2.1Unity3D游戏引擎

2.1.1软件介绍

Unity3D作为众多游戏引擎中的翘楚,它并没有悠久的历史,但是它的惊艳已经让所有人看到了。

Unity的开始是于2004年诞生在丹麦的阿姆斯特丹,当时开发该工具的人看到它前所未有的价值,就这样,在2005年,Unity1.0诞生了。

发展至今,Unity3D成为了一个全面的游戏引擎系统,从建模、光效、动画、粒子效果、碰撞系统、视角、层级文件管理和Unity强大的内置外置插件,让开发者从无到有,一个完整的游戏可以由这个强大的游戏引擎开发而出。

Unity3D支持多平台的导出,涵盖了WINDOWS、MACOSX、WEB各种终端,让开发者开发的游戏兼容PC端和移动端。

Unity3D本是没有完善的建模功能的,但是目前市面上主流的三维建模软件是可以和Unity相辅相成的,如3dsMax、Blender、Cheetah3D;2018年,Unity开发的三大建模插件,ProBuilder、Polybrush、ProGrids,可谓是让本就优异的Unity引擎锦上添花。

Unity3D的可视化编辑界面对于任何一位初学者来说都是友好的,独特的层级面板,存放代码和物体模型的文件夹面板,属性查看面板,还有游戏场景设置面板和游戏预览窗口面板,这两大面板独立分开但是更改却是实时的,开发者可以在开发游戏的过程中,一边开发一遍查看效果,大大提高了开发的效率。

有句古话叫做:

“众人拾柴火焰高”,一个人的力量总是有限的,在开发过程中难免会遇到许许多多的问题,众人分享经验和解决的方法就起到了重要的作用,Unity社区就是热爱Unity的开发者们的聚集地,当你有疑惑,有见解,有好的想法,都可以在这里进行分享。

2.1.2生命周期函数

在Unity中,生命周期函数是一个让游戏完整运行且必不可少的一环,它的使用必须继承MonoBehaviour类后方可正常运行,此函数都是Unity系统自带且定义好的,当你有游戏中包含此类函数,会自动调用,且重要的一点,具体的某一个生命周期函数的调用顺序与游戏项目中Script的书写顺序无关。

在Unity中常用的生命周期函数:

Reset() :

复位事件,只在编辑模式下调用且整个周期内调用一次,开发者在点击Inspector面板的Reset按钮或首次加载该组件时将被调用。

Awake():

唤醒事件,在游戏开始之前运行,用于初始化变量或游戏状态,该函数在整个周期内只会执行一次,运行于Start()函数之前。

OnEnable():

启动事件,用于控制脚本,当对象的脚本启用、激活、禁用时执行一次,在协同程序内无法使用。

Start():

开始事件,在Awake()方法结束时调用,与Awake() 方法一样,在整个周期内只调用一次,当脚本初始化后被启动,主要作用于UI,如获取Gameobject和程序内的组件。

FixedUpdate():

固定帧更新,与物理引擎密切相关,常用于力和运动模块,避免物体运动时跳帧,在Rigibody施加力时使用,用于游戏内的物理组件模块的更新。

Update():

正常帧跟新,用来更新游戏逻辑,每一帧都将会调用此函数,当系统无法响应或机器性能低下时,将会停止执行,也是我们俗称的卡帧。

LateUpdate():

后续更新事件,当所有Update()执行完成之后被调用,一般用于处理Camera的移动和跟随逻辑,如人物的动作在Update()执行完成后才会调用LateUpdate()的摄像机跟随。

OnGUI():

图形渲染事件,所有与GUI有关的代码都需要调用此函数,如UI面板时显示的Button组件和Panel组件需要调用它。

OnDisable():

禁用事件,当对象行为不可用或代码被卸载时调用,可用于清理代码,但是脚本并不会被销毁。

OnDestroy():

销毁事件,当物体主动销毁或被销毁时调用,当此函数出现时,意味着当前生命周期结束。

图2-1生命周期函数流程图

2.1.3GUI

GUI的缩写为GraphicalUserInterface,一款好的游戏,与玩家的互动是必不可少的,Unity3D自身就拥有很好的内置和外置图形交互系统,如OnGUI、NGUI、UGUI等,使用以上插件或工具便可以做出精美的UI面板,图形交互界面是游戏的主要内容,在游戏中的作用是举足轻重的,作为美化游戏和提高用户交互性的主要手段。

好的GUI界面可以给予玩家有效的引导和提示,可以提供给玩家大量的信息,让玩家有意识的决定游戏的大概方向,怎么玩、怎么做、做什么都是需要GUI图形界面来引导的,如倒计时就意味着告知玩家需要注意有效时间内该做什么,血条量告知玩家当收到攻击或者错误操作达一定次数时,游戏将会结束。

更多的是,一个好的图形界面可以给人带来视觉上的冲击,让人玩过这个游戏过后还流连忘返。

作为开源的NGUI,在Unity还没有内置的图形设计模块之前,这个优秀的插件可谓是盛极一时,NGUI主要分为四个部分,分别是UI、Tween、交互的代码,底层支持。

简单易学是它的特性,本游戏的游戏交互界面设计就是由这款优秀的插件制作而成。

2.2开发工具介绍

2.2.1VisualStudioCode软件

作Unity3D的是通过VisualStudio来编写C#脚本的,内置的IntelliSense和代码导航能让开发者的编码效率事半功倍,智能感应系统将会在错误出现时及时指出,方便开发者及时修改和重构脚本。

使用的功能全面的集成开发环境IDE,适用于多平台如Linux、Web、Windows、Android、ios和云的应用。

通过Unity创建的脚本继承自MonoBehaviour,在VisualStudio中默认使用“实施MonoBehaviours和快速MonoBehaviours”向导可以快速的创建脚本,自定义的环境让开发者拥有自己想要的编码环境和模式进行编码。

2.2.23dsmax软件

3DStudioMax,也叫做3DMAX,是Autodesk公司开发用于PC系统的三维动画渲染和制作,应用范围可是相当的广,可用于制作三维动画、广告设计、多媒体设计、游戏设计等。

强大的渲染能力是其他软件无法比拟的,制作的人物模型和世界地图可用于Unity3D中,但是制作优良的模型需要一定的基础和经验,由于制作过程繁琐和耗时大等原因,本次游戏开发的模型从AessetStore和一些开源网站上获得。

2.2.3C#开发语言

C#作为微软.NET的核心编程语言,作为新式的编程语言,但他已经是微软的老用户了,C#来源于C语言,继承了C和Java中面向对象的有点,熟悉C、C++、Java的程序员掌握起来将会得心应手。

拥有良好的语法和函数库设计,可以让开发者写出更自然更简洁的代码。

种种趋势让多少程序员争先恐后的认识它、了解它,当你学习并且使用过后,“真香”就是你想说的。

综合多个语言鼻祖的优点,C#已经被越来越多人推崇,受到了编程语言界的一致认可。

2.3使用插件介绍

2.3.1NGUI插件

在Unity3D早期,开发引擎是自身内置的UI工具是很差的,无法制作出令开发者满意的UI界面,用于引擎内UI设计的工具是一个名为NGUI的插件,即使现在Unity3D推出了自带的UI设计工具UGUI,但是NGUI对于Unity的UI设计带来的影响是不可磨灭的。

要知道,UGUI的开发者和NGUI的开发者是同一批人,因为交互的紧密性,我们这款游戏的UI界面用的就是NGUI。

NGUI划分开来,主要分为四大部分,分别是UI、交互方面的代码如UIGrid、UITavle,UITween,以及底层核心代码的支持。

NGUI对于每个场景来说,都是建立在一个根下,即是UIRoot,也叫做窗口,UIRoot含有4个对象属性,缩放规则、最大高度、手动高度和最小高度。

从UI方面来讲,NGUI插件提供了大量的组件, 如UIRect,UISprite,UILabel,UIAtlas,UIFont,UILocalize,UITextList,UITexture,图片的显示对于一个UI界面来说是主要的,在引擎开发中,我们需要用到的是精灵图,作为主要提供者UIAtlas,在处理图片上是必不可少的。

在UI界面上必然会看到文字,文字的显示归功于组件UILabel;涉及到动画方面,就要谈到UITween了;当你需要浏览大量文字时,直观的显示会增加玩家对游戏的厌恶感,人对图片是比较敏感的,但是对于文字确实相反,大量的文字直接显示在UI界面中也并不是那么美观,这时候Slider组件就起到了很好的分隔作用;TypewriterEffect也是逐字显示效果,可用于提示和旁白的显示;功能强大的NUGI还拥有许多有趣的组件,一个美观且交互性极强的UI界面就由它来完成。

 

第三章游戏功能需求分析和结构设计

3.1游戏大体结构方案设计

当玩家接触到一款新游戏时,都是陌生且好奇的。

为了让玩家有个大概的玩法且让游戏有一个正确的走向。

所以该游戏选用了大多数游戏的大体结构进行设计。

游戏大体结构方案的详情如下图3-1所示。

图3-1游戏大体结构图

3.2游戏总体结构方案设计

结合Unity3D游戏开发引擎以及第三方辅助插件NGUI,探讨各个模块的实现

方法后,所得游戏总体结构的方案分析如图3-2所示。

图3-2游戏总体结构图

(1)游戏玩法设计模块:

此模块主要阐述游戏的具体玩法,游戏总共分为6个关卡,每个都是在同一个场景进行,玩家需要进行不同的操作进行逃生。

第一关是最简单的关卡,火灾刚刚发生时,楼道和房间的火势还很小,玩家只需根据逃生指示进行逃生即可,根据逃生指示往楼梯下走即可通关。

第二关是火灾中会产生大量对人体有害的有毒烟气,正确的做法是把房间的毛巾用水沾湿,用毛巾捂住嘴鼻,防止吸入有害气体,进行快速逃生。

第三关是火灾发生后房间已经被大火湮灭,无法从安全通道逃离时,房间内含有绳索,可以采用绳索逃生,玩家需要使用房间内的绳索固定,用绳索下滑逃离房间。

第四关与第三关情况相同,也是无法使用安全通道撤离,房子内有的道具为木板,玩家需要使用木板架到邻居阳台,从阳台进行逃生。

第五关情况房子内火势较大,且无有效工具进行逃生,楼层不高的地方可以采用管道逃生,从房子内的管道往下滑即可进行逃生。

第六关情况如第五关一致,但是如果处于高楼层时,这种做法是很危险的,这时采用的是呼救逃生,此时已经没有有效方法可以自救,需要借助他人的帮忙,此时需要让路人注意到你,呼救逃生是有效的手段。

(2)游戏场景模块:

游戏场景的的搭建造主要是通过开源网站的资源和Unity官方的AseetStore下载,此游戏场景是普通商品房,较为贴合现代火灾逃生场景,玩家的所有操作都是在房间、楼道、阳台进行的。

作为火灾重要的模块——火,火焰的粒子效果和烟气的粒子效果对游戏的真实性起到了举足轻重的作用,更加真实的火焰和烟气效果能给人带来视觉的冲击和身临其境的感觉。

(3)交互设计模块:

交互设计模块是最主要的模块,主要分为UI界面交互、游戏交互、碰撞交互和其他交互四大类。

界面交互包含有游戏开始的主界面、选择关卡界面、进入游戏后的血量和倒计时等信息提示界面、暂停界面、成功界面等;游戏交互包含人物的动作选择、需要做相应的操作等;碰撞交互包含玩家进行错误操作,如走到火堆血量会减少,需要点击物体进行一系列操作等;其他交互则有音效和视频播放等。

 

第四章游戏的详细设计与实现

4.1场景模块

4.1.1场景搭建

此场景是以现代化小区商品房为模型,搭建而成的室内逃生系统。

本场景的资源来自开源网站和UnityAseet,房间物体的摆放遵循家庭中家具等物的摆放顺序,真实的模拟了火灾可能发生的场景。

本系统一共有6个关卡,这六个关卡都是在同一场景进行,但是每个场景都有不一样的物体和模型,因为要控制关卡间物体的不一样,于是每一个存在的物体都存放在单独的一个目录下,且这些目录的状态都是为关闭的,即Setacive(false),当玩家选择某一关卡时,会调用Sitch结构里的代码,某个场景里的物体将变成Setactive(true),这样就能很好的解决了同一场景不同关卡不同物体的矛盾。

图4-1关卡物体分类

4.1.2摄像机

Unity的Camera在游戏中就相当于玩家的眼睛,自定义的修改摄像机的视角,能真正做到“身临其境”的感觉。

摄像机参数:

图4-2

摄像机属性面板

ClearFlags:

清除你不想要的屏幕部分,多数使用于不同元素多摄像机显示

Skybox:

背景为天空盒子

SolidColor:

背景为单一的颜色

DepthOnly:

Depth值越摄像机渲染的画面越在上方

Don'tClear:

在帧数变化时不清除上一帧的颜色,可以用于重影效果

Background:

摄影机背景颜色

CullingMask:

通过Layer(层)的设置来屏蔽一部分游戏物体在此摄影机中不被渲染

Projection:

摄影机投影方式

Perspective:

透视模块

Orthograp

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1