基于Unity3D的模拟垃圾分类游戏的设计与实现_第1页
基于Unity3D的模拟垃圾分类游戏的设计与实现_第2页
基于Unity3D的模拟垃圾分类游戏的设计与实现_第3页
基于Unity3D的模拟垃圾分类游戏的设计与实现_第4页
基于Unity3D的模拟垃圾分类游戏的设计与实现_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要□□垃圾分类通常是指按照指定的规范对垃圾进行分类、存储、放置和运输,将其转化为公共资源的一系列行为。各种东西都有其可用之处,垃圾分类的目的就是为了尽可能多的利用垃圾的资源,以提高垃圾自身的资源价值。由于我国的快速发展和进步,人民的生活变得富裕了起来,产生的垃圾越来越多,国家对此也采取了措施,将生活垃圾分类轨制归入法律,上海市成为第一个尝试垃圾分类制度的中国城市,因此,垃圾分类知识成为生活中必不可少的知识之一。由于九年义务教育并没有教授常见垃圾分类的知识,所以大部分的群众没有基本的垃圾分类知识。虽然国家对此采用了公屏播放和公益活动等方式宣传垃圾分类,但效果并不太理想,仍需群众主动学习垃圾分类的知识。本论文首先介绍了游戏的开发所需要的技术引擎,使用Unity游戏引擎进行开发,对一款基于Unity3D的垃圾分类模拟游戏的设计和实现进行说明。在游戏的设计和实现阶段,先简单介绍了游戏的开发背景,对游戏场景进行搭建,以第一人称为视角,着重实现垃圾的刚体和垃圾桶之间的碰撞检测,设计UI图形界面并优化增加用户的交互性。论文最后对游戏进行了一定的总结,提出存在的缺点和改进,对未来进行了展望。垃圾分类模拟游戏以第一人称视角,在模拟的生活场景中游玩,提高用户的真实感和体验,将垃圾丢进垃圾桶内,弹出垃圾的相关信息,用以帮助用户认识和学习垃圾分类的知识。□□关键词:Unity3D垃圾分类场景模拟教育知识

Abstract□Garbageclassificationusuallyreferstoaseriesofbehaviorsthatclassify,store,placeandtransportgarbageaccordingtospecifiedspecifications,andtransformitintopublicresources.Allkindsofthingshavetheiravailability.Thepurposeofgarbageclassificationistomakeuseofgarbageresourcesasmuchaspossibletoimprovethevalueofgarbageresources.WiththerapiddevelopmentandprogressofChina'seconomy,people'slifeisgettingricherandricher,andmoreandmoregarbageisproduced.Thestatehasalsotakenmeasurestoputtheclassificationsystemofdomesticgarbageintolaw.ShanghaihasbecomethefirstChinesecitytotrythegarbageclassificationsystem.Therefore,garbageclassificationknowledgehasbecomeoneoftheessentialknowledgeinlife.Becausenine-yearcompulsoryeducationdoesnotteachtheknowledgeofcommongarbageclassification,mostofthepeopledonothavebasicgarbageclassificationknowledge.Althoughthestatehasadoptedpublicscreenbroadcastandpublicwelfareactivitiestopromotegarbageclassification,theeffectisnotideal,andthemassesstillneedtoactivelylearntheknowledgeofgarbageclassification.Thispaperfirstintroducesthetechnologyengineneededforthedevelopmentofthegame,usingunitygameenginefordevelopment,anddescribesthedesignandimplementationofagarbageclassificationsimulationgamebasedonunity3D.Inthedesignandimplementationstageofthegame,thedevelopmentbackgroundofthegameisbrieflyintroduced,andthegamesceneisbuilt.Fromtheperspectiveofthefirstperson,thecollisiondetectionbetweenthegarbagerigidbodyandthegarbagecanisemphasized,theUIgraphicinterfaceisdesignedandtheinteractionofusersisoptimized.Finally,thispapersummarizesthegame,putsforwardfutureideasandactions,andpointsouttheshortcomingsandmodificationmethods.Thegarbageclassificationsimulationgameplaysinthesimulatedlifescenefromthefirstpersonperspectivetoimprovetheuser'ssenseofrealityandexperience,throwthegarbageintothegarbagecan,popupthegarbagerelatedinformation,tohelptheuserunderstandandlearnthegarbageclassificationknowledge.Keywords:Unity3D;Garbageclassification;Scenesimulation;Educationalknowledge;

目录1.绪论………………………11.1研究背景和研究意义…………………11.2国内外研究……………11.3论文组织机构…………22.技术和引擎介绍…………32.1Unity3D游戏引擎………32.1.1Unity3D的总体概述…………………32.1.2Unity3D的优点………32.1.3Unity3D国内外研究…………………32.2物理引擎………………32.2.1物理引擎简介………32.2.2物理引擎的作用……………………42.3C#………………………42.3.1C#简介………………42.3.2C#的优点……………53.系统分析与设计…………63.1游戏开发背景………63.1.1游戏类型定位………63.1.2游戏内容介绍………63.2游戏场景的搭建………63.2.1模型制作……………63.2.2模型导入……………63.2.3场景搭建……………63.3UI界面设计……………74.系统实现…………………84.1角色控制………………84.2碰撞检测……………104.3用户界面的实现……………………104.3.1Unity界面的发展史………………104.3.2UGUI的特点………114.3.3新用户界面的优势………………114.3.4Canvas画布………114.3.5游戏界面的开发…………………115.项目总结………………13参考文献……………………14致谢…………16广东东软学院本科毕业设计(论文)绪论研究背景和研究意义垃圾分类通常是指按照指定的规范对垃圾进行分类、存储、放置和运输,将其转化为公共资源的一系列行为。各种东西都有其可用之处,垃圾分类的目的就是为了尽可能多的利用垃圾的资源,以提高垃圾自身的资源价值[1]。由于我国的快速发展和进步,人民的生活变得富裕了起来,进而产生的垃圾也越来越多,现在有的城市已经出现了“垃圾包围城市”的现象。采取垃圾分类处理和回收再利用,是处理垃圾泛滥的主要方法,也是解决这类现象的主要途径。全国人大常委会审议于2019年6月25日拟定《草案》,提出要将生活垃圾分类制度纳入法律。《草案》从多个方面对固体废物污染防治体系进行了完善,提出要建立覆盖全农村的生活垃圾分类体系。大连在2019年9月设立了垃圾分类监督员,分布于所有垃圾分类点。而上海成为了首个进行尝试垃圾分类制度的中国城市。2020年,上海将全力完善垃圾全过程分类体系,巩固并提高生活垃圾分类利用价值,努力弥补体系存在的不足之处。国内外研究垃圾分类处理作为一种新型产业,在众多国家中发展飞速。特别是在发达国家中,垃圾分类处理产业占据着国家产业结构非常重要的地位。举个例子,在过去,美国巴尔的摩、华盛顿和里士满这三个城市,就要花费40美金处理一吨再生垃圾。正因为这么高的金额,垃圾分类作为新型产业快速兴起,在1995年便创造了5100个就业机会。这个产业不仅节省了垃圾处理的成本,还创造了5亿美金的财富,而这三个城市仅仅只是美国一个非常小的区域。美国被称为垃圾生产大国,走在大街上,便能看出垃圾分类已经渐渐融入了日常生活中,因为随处都可以看见五颜六色的垃圾分类箱。政府除了在大街两旁设置专门的垃圾分类箱外,还会定期派出专门的负责人去将按户分类的垃圾进行清理和运送,给生活垃圾的分类带来了各种便利。在这里,由政府主持的垃圾分类需要进行收费,像支付饮用水一样,市民也表示大力的支持,因为他们都非常了解垃圾分类的知识[1]。无论是发展中国家或者发达国家,垃圾分类正成为一种趋势,然而,曾经在这一领域处于世界领先地位的中国,却几乎失去了良好的传统。对于勤俭持家的中国人来说,垃圾分类并不陌生。在上个世纪五十年代,将吃剩的橘子皮用于泡脚治脚病,将用完的牙膏皮、瓶瓶罐罐收集起来,将生活垃圾用于堆肥,这些场景在当时非常常见。这不仅给我国的工农业提供了原料,还避免了垃圾对环境的污染。勤俭节约是中华民族优秀的传统美德,而如今我们的生活变好了,渐渐地丢失了这一美德。对垃圾的不正确处理,随意丢弃,污染的不仅只是环境,还会危害到我们自己。所以我们需要通过垃圾分类处理,来避免垃圾对环境的污染。近几年年来,我国正在加速实施垃圾分类的制度。国家发改委、住房和城乡建设部于2017年3月发布了《生活垃圾分类制度实施方案》,要求我国46个城市需要对生活垃圾实行强制性分类。国家发改委,住房和城乡建设部,生态环境部等九个部门联合于2019年6月下发《住房和城乡建设部等部门关于在全国地级及以上城市全面开展生活垃圾分类工作的通知》。通知表明,从今年开始,我国各大城市都要进行垃圾分类的制度。到2020年底,先行试点的46个重点城市要基本建成垃圾分类处理体系,其他城市要实现事业单位生活垃圾分类的全面覆盖。到2022年,每个地级城市要实现至少有一个区生活垃圾分类全面覆盖。到2025年,地级以上的城市要基本建成垃圾分类处理体系。总的来说,不仅仅只是上海市,我国各大城市都要实施垃圾分类的制度[1]。论文组织机构论文主要围绕一款基于Unity引擎开发的垃圾分类教育类游戏[2],按照从理论到应用,从设计到实现,对一些相关的技术进行研究,并予以设计实现[3]。论文一共分为五个章节,具体安排如下:第一章节:绪论,介绍了本文的研究背景和研究意义、国内外研究的现状、论文的具体组织和内容。第二章节:详细的介绍了项目开发所使用的相关技术及使用引擎,主要有Unity3D游戏引擎、物理引擎以及使用的编写语言C#。第三章节:讨论了项目的开发背景和总体设计,以及游戏场景的搭建。第四章节:详细的介绍了项目的实现开发过程,通过使用第一人称视角和碰撞检测触发事件,界面UI的优化来实现真实模拟垃圾分类的游戏。第五章节:项目总结,对论文进行总结和归纳指出不足之处,提出解决方案和未来的展望。

技术和引擎介绍Unity3D游戏引擎2.1.1Unity3D的总体概述Unity3D是UnityTechnologies开发的综合性游戏开发工具,是一个具有综合性和集成性的专业游戏引擎,玩家可以通过Unity3D轻松创建3D视频游戏、可视化建筑、实时3D动画等多平台互动内容。Unity它的编辑器可以在windows、Linux(目前只支持Ubuntu和CentOS发行版)、MacOSX下运行,并且可以将游戏发布到windows、Mac、Wii、iPhone、webgl(需要HTML5)、windowsPhone8和Android平台。还可以使用unitywebplayer插件发布web游戏并支持Mac和windowsweb浏览。它的网络播放器也支持在Mac上。类似于director、blender游戏引擎、Virtools或torque游戏生成器等,它使用交互式图形开发环境作为软件开发的第一种方式[4]。2.1.2Unity3D的优点Unity3D是一款非常成熟的游戏引擎,它的强大功能是毋庸置疑的。可供编辑的IDE环境,集所有编辑器于一身,比如需要更改模型的材质时,只需使用材质编辑器即可。所见即所得,Unity3D可以编辑后直接运行,而且可以在运行过程时进行编辑来查看效果。个人也能容易地创作出游戏,这是它的口号也是其优点之一,它完全免费提供给个人开发者使用,并且容易上手,能够快速开始游戏开发。支持多平台发布,当下流行的平台均能满足,这也使得它成为大多数游戏开发团队首选游戏引擎[5]。2.1.3Unity3D国内外研究不同于别的游戏引擎,Unity选择了在中国举行游戏引擎技术研讨会,这吸引了许多游戏开发商的注意。中国东华大学和韩国国立大学游戏教育学院联合在上海举办了研讨会。大会不仅介绍了Unity3D游戏引擎技术,还提高了中国先进游戏技术的开发能力,为今后游戏开发培养了后备的开发人员。2010年5月,在韩国举行了Unity3D游戏引擎技术研讨会,这是Unity最早举行的研讨会。在2010中国欢乐展展会上,很多开发游戏开发商展示了自家游戏的运行效果。许多制造商已与开发商签订了提早的引擎预定协议。据悉,目前已有10多种新引擎开发采用了Unity3D游戏引擎技术[4]。物理引擎2.2.1物理引擎简介物理引擎通过为刚性对象提供真实的物理特性来计算运动、旋转和碰撞响应。在游戏应用中,除了渲染美观的游戏画面外,还需要计算虚拟世界系统的内部物理规律。物理引擎不是每个游戏都必要的,编写一定程度的脚本也可以实现简单的物理定律。但是,当游戏需要更复杂的物体碰撞、滚动、滑动或弹跳时,编程难度就更大。物理引擎使用对象属性来模拟刚体行为,不仅可以使结果更加真实,而且在编写脚本方面更容易掌握。一个好的物理引擎允许复杂的机制,例如球形关节、轮子、汽缸或铰链。有些还支持非刚体(如流体)的物理特性[6]。2.2.2物理引擎的作用游戏在刚开始开发的时候并没有使用物理引擎,但这并不是指物体死板的固定住一动不动,物体依旧可以按照游戏开发者设定好的脚本进行运动,这也是物体只会一成不变地做设计好的规定动作的原因。而当游戏添加了物理引擎之后,就变得有所不同了。只要你的电脑性能非常优越,就完全可以用物理引擎对现实世界中各种物体的运动进行模拟。物理引擎完全突破了以前那种按预定脚本执行的方式,但这要求3D游戏中的游戏对象按物理参数运行。但是,所介绍的“物理引擎”并不是指真实的物理效果。它让游戏开发者的开发变得非常方便快捷,只需几行代码就可以在游戏中实现现实中各种各样的物理效果。物理引擎是提供给游戏开发者的平台,类似于以前理解的3D游戏引擎[6]。例如,在很久以前的动作射击类游戏中,当时还没有什么物理引擎,如果在一辆汽车旁边放置一颗炸弹,引爆炸弹将汽车炸飞,这个过程会非常的僵硬,因为炸弹无论多少,在汽车的任意方向,爆炸的效果和汽车被炸飞的方向都只会根据脚本设计的样子进行,不会产生任何区别。现在有了物理引擎,实现物品之间的相互作用产生不同效果会变得非常的简单。不同数量的炸弹引发不同的爆炸规模,会产生不同的爆炸效果,汽车也会因此产生不一样的位移。C#2.3.1C#简介C#语言是一种面向对象的高级程序语言,是微软公司程序员AndersHejlsberg的研究成果。它是微软公司.NETwindows网络框架的主导,是微软公司发布运行在.NETFramework和.NETCore平台上的设计语言,并出现在微软的专业开发人员论坛上。它包括了诸如单继承、接口、几乎与Java相同的语法和编译成中间代码然后运行等过程,和Java语言看起来非常的形似。但是它借鉴了Delphi的一个特性,直接合COM(组件对象模型)集成,这明显和Java语言不同[7]。2.3.2C#的优点C#语言是一种面向对象的高级程序语言,相比大多数的编程语言,它是后生的新型语言。也正是如此,它集成了很多语言的优点,使用起来更加的简单方便,在语法使用方面也非常的类似,这也是为什么它看起来和别的编程语言那么相似的原因。C#语言继承了C语言和C++语言的许多特性和功能,充分照顾到了开发人员的编程习惯,这也使得熟悉C语言或C++语言的程序员可以快速上手使用。C#语言是由微软公司发布的一款设计语言,作为一个商业产品,在设计时就充分考虑了常见的使用需求,集成了VB简单的可视化操作,就是所见即所得,能一边开发一边查看效果。微软同时也提供了一系列的工具和服务,让开发人员用更少的代码做更多的事,有效提升了开发的高效性,使它成为.NET开发的首选语言。可能正是这些优点,成为Unity3D游戏引擎采用C#语言作为编程语言的原因。

系统分析与设计游戏开发背景3.1.1游戏类型定位本游戏是一款垃圾分类模拟游戏,通过对现实生活场景的模拟,使用第一人称视角进行观察,可以给用户带来一种身临其境的感觉,体现出游戏的真实感,以达到让用户深刻记忆和快速学习日常生活中基本的垃圾分类的知识[8]。3.1.2游戏内容介绍垃圾分类游戏属于教育性游戏,主要有以下功能特点:游戏场景的选择。在游戏的开始界面,有一个“开始游戏”的按钮,单击这个按钮用户会进入选择场景选择界面。用户可以选择场景选择界面上说明的游戏场景。本款游戏设置了两种场景,即生活居住场景和公司场景[9]。按键功能。用户可以使用“WASD”键来控制游戏角色的上下左右移动;以及使用“F”键将垃圾拿起或放下。游戏场景的搭建3.2.1模型制作游戏使用的模型选择网上下载的免费素材,使用3dsMax三维建模软件或者Unity3D自带的模型组件对其进行修改和加工。为了能够更加还原生活场景,采集生活场景的相关信息,主要包括其外观和材质。使用Photoshop对材质贴图进行修改处理[10]。3.2.2模型导入由不同软件建立的模型需要以特定的格式才可以导入Unity3D中,3dsMax创建的模型只能用FBX文件格式导入。模型的导入可能还会导致丢失模型贴图材质,需要注意映射问题进行避免[11]。3.2.3场景搭建Unity拥有很多便利的功能组件,使用地形编辑器组件,可以方便地进行真实场景模拟[12]。首先,将游戏需要的模型导入到Unity中,参照生活场景信息,将模型进行摆放和移动调整其位置,再用地形编辑器进行点缀[13]。碰撞体与刚体之间的相互作用使对象产生博弈的物理效应,右键选择游戏模型,给模型添加碰撞体和刚体。碰撞体可以使对象相互碰撞,而刚体控制和影响对象受物理效应的。碰撞体和刚体并不是绑定在一起的,但当两个或多个碰撞体发生碰撞时,其中一个碰撞体必须绑定着刚体才能有效地进行碰撞,发生碰撞后会向绑定对象发送三条碰撞信息。这些信息可以通过脚本进行处理,用于创建相关的行为[14]。UI界面设计在设计UI时,坚持以下原则:交互友好,界面简洁,颜色搭配协调,字体简洁明了。游戏除了开始界面使用UI设计外,在游戏场景内也使用了UI设计,当用户视角中心,即画面中心对准垃圾物品,会显示其对应的垃圾名称。当用户将垃圾丢进垃圾桶内后,会显示垃圾对应的简介和其分类,用以帮助用户认识学习该垃圾如何正确分类。

系统实现角色控制第一人称视角是指从玩家的主观角度来进行游戏,而第三人称视角是指玩家从客观的视角来进行游戏,能观察到全身及周围的环境,类似于监控器,又被称为上帝的视角[15]。这两种游戏视角是游戏常用的游戏视角。为了给用户带来更加真实的体验,我选择了采用第一人称视角做为游戏视角,给用户一种身临其境的感觉,增强游戏的主动性和真实感[16]。游戏角色,也就是由玩家控制的虚拟人物,是角色扮演类游戏最重要的一部分。首先在Unity里创建一个空对象,命名为Player代表游戏角色,因为采用的是第一人称视角,所以需要将摄像机放入角色的对象里,将其调整到眼睛的高度,将鼠标固定在屏幕的中间并将其隐藏,这样摄像机观察到的视角便是角色观察到的视角。为了让角色可以正常的四处观察周围,需要创建一个角色观察脚本,所以事件由鼠标控制。鼠标可以在X轴和Y轴进行移动,当鼠标在X轴进行左右移动时,角色会跟随着视角进行旋转,当鼠标在Y轴进行移动时,角色不能跟着视角进行旋转,所以要设计成只有摄像机在Y轴进行旋转。因为正常的视角只能从头顶看到脚底,所以需要将摄像机在Y轴的旋转限制在180度以内,这样它就不会翻转到角色的背后。主要代码有:publicclassMouseLook:MonoBehaviour{publicfloatmouseSensitvity=100f;//鼠标旋转速度publicTransformplayerBody;//角色对象floatxRotation=0f;//私有变量voidStart(){Cursor.lockState=CursorLockMode.Locked;//将光标隐藏并锁定在屏幕中央}voidUpdate(){floatmouseX=Input.GetAxis("MouseX")*mouseSensitvity*Time.deltaTime;//获取鼠标X轴的变化floatmouseY=Input.GetAxis("MouseY")*mouseSensitvity*Time.deltaTime;//获取鼠标Y轴的变化xRotation-=mouseY;xRotation=Mathf.Clamp(xRotation,-90f,90f);//控制旋转角度在180度以内transform.localRotation=Quaternion.Euler(xRotation,0f,0f);//摄像机围绕X轴旋转playerBody.Rotate(Vector3.up*mouseX);//角色围绕Y轴旋转}}为了控制角色的移动,Unity提供了三种组件让开发者使用:变换,刚体,角色控制器。而我采用的便是角色控制器,能够控制人物的简单动作,主要用于第一人称或第三人称的角色[17]。如图4-1所示:图4-1角色控制器为了让角色可以移动,我们需要获取一些输入,使角色在面向方向进行X轴和Z轴的移动。为了符合现实,还需要给角色添加重力。主要代码有:publicclassPlayerMovement:MonoBehaviour{publicCharacterControllercontroller;//角色控制器publicfloatspeed=12f;//角色移动速度publicfloatgravity=-9.81f;//重力加速度publicTransformgroundCheck;publicfloatgroundDistance=0.4f;publicLayerMaskgroundMask;Vector3velocity;boolisGrounded;voidUpdate(){isGrounded=Physics.CheckSphere(groundCheck.position,groundDistance,groundMask);//用于检测角色是否在地面//当角色在地面时,重置Y轴速度if(isGrounded&&velocity.y<0){velocity.y=-2f;}floatx=Input.GetAxis("Horizontal");//获取X轴的输入floatz=Input.GetAxis("Vertical");//获取Z轴的输入Vector3move=transform.right*x+transform.forward*z;//获取角色的面向方向来进行移动controller.Move(move*speed*Time.deltaTime);//控制角色移动velocity.y+=gravity*Time.deltaTime;//Y轴速度controller.Move(velocity*Time.deltaTime);//给角色添加重力}}碰撞检测检测碰撞的方法有两种,一种是对撞机,对撞机是一个包含一个刚体对撞机和一个必须作用于游戏对象的静态配置器的组件。另一种是触发器,触发器是对撞机的一个属性,设置该属性后即可进行碰撞检测。在本款游戏中主要的碰撞检测是垃圾与垃圾桶之间的碰撞。如果想要把对撞机视为触发器并且生效,则可以尝试中使用istrigger,在对撞机属性中进行勾选,物理引擎便无法控制触发器[18],如图4-2所示:图4-2碰撞体当两个或多个碰撞体发生碰撞时,如果想要收到对象的碰撞信息,其中一个碰撞体必须有一个刚体。刚体属性包括质量、重力计算、碰撞检测频率等,在本游戏中的垃圾作为能够运动的对象绑定着刚体。在碰撞后会收到三条碰撞信息,用于处理游戏中的各种触发事件非常有效[19]。在垃圾桶内添加一个触发器,用来判断垃圾是否正确分类。这时需要编写一个脚本来触发事件,当垃圾掉入垃圾桶内,触发事件弹出UI界面,显示所对应垃圾的相关信息,告知用户是否正确将垃圾进行分类,通过这样的方式来帮助用户快速学习基础的生活垃圾分类知识,并且能够记忆更加深刻。用户界面的实现4.3.1Unity3D界面的发展史在早期,Unity的用户界面系统是onGUI,非常的复杂和低效,和HTML和CSS的编写格式类似,使用起来效果非常差。好在Unity支持第三方开发插件的使用,所以在新的UI系统出现之前,国内绝大部分的商业项目都是使用第三方厂商开发的NGUI插件进行UI制作。在经过不断的版本更新和优化,Unity的功能不胜枚举,使用起来更加简单方便,成为了绝大多数游戏开发团队首选的开发引擎。Unity在4.6版本内置了新的UI系统,功能和可用性丝毫不比NGUI差,已经想当的成熟。4.3.2UGUI的特点Unity在4.6版本后内置了新的开始界面系统,官方对新的UI开发系统的标签是:敏捷,迅速和可视化。它与Unity的兼容性高,对于开发人员来说,更加方便进行拓展使用,制作的效果好,效率更好[21]。新的开始界面系统具有以下功能:1、操作简单,稳定性高。2、由于组件是Unity内置的,兼容性更高,组合更加紧密。4.3.3新用户界面的优势和以前旧的用户界面系统相比,新的UI界面系统具有新的事件机制和独立的坐标系,操作更加方便,运行效率显著提高。而比起第三方的UI插件,新的UI系统是Unity内置组件,和Unity的兼容性更高,使得做深度处理更加方便。直接使用SpritePacker,不再需要Altas,省去了不少麻烦[21]。4.3.4Canvas画布Canvas画布是新UI开发系统最重要的一部分,所有UI控件都必须在它上面绘制,它是所有UI控件的父对象。事件系统同样也很重要,负责监听用户的输入。当我们创建任何UI控件时,如果分层视图没有画布或事件系统,Unity会自动帮我们创建[21],如图4-3所示:图4-3自动创建画布和事件系统4.3.5游戏界面的开发本游戏主要开发的界面分为两类:一类是游戏的主界面,也就是游戏开始画面。用户启动游戏后看见游戏主界面,选择开始游戏按钮后,用户就会进入场景选择界面,场景选择界面提供不同的场景供用户进行选择。另一类是弹出式的UI界面,也就是游戏进行过程中的界面,这个界面需要垃圾掉入垃圾桶内触发,当垃圾掉进垃圾桶内,会弹出一个显而易见的UI界面,显示垃圾的相关信息和分类的正确与否。

项目总结本文介绍了制作垃圾分类模拟游戏的设计方法及技术,针对游戏的开发流程,分别对游戏的用户图形界面、角色控制和碰撞检测三个关键技术进行了详细的分析说明。使用Unity游戏引擎进行游戏开发,以第一人称视角为角色视角,通过生活场景的模仿,开发出了具有较强真实感和交互性的垃圾分类模拟游戏,用户可以通过游戏更快的学习掌握基本的生活垃圾分类知识。由于时间和技术有限,本文只是实现了一些基本的功能,还有许多技术问题尚未解决和可玩性的修改。以下可能成为未来工作的重点:建模的完善。本人在3D建模方面的经验不足,在今后加强学习这方面的知识,通过不断的学习来获取经验。增加适合不同的场景背景音乐,提高用户的游戏体验和视觉感受。使用VR技术来进行制作项目。本款游戏并没有采用VR技术进行制作,采用第一人称为视角制作成PC游戏,一部分原因是因为VR技术目前尚未完善和普及。在未来,随着技术的发展,VR技术更加完善方便,普及到各家各户,届时使用VR技术进行模拟教育性游戏,能具备更加真实的体验。增加更多样的游戏玩法,例如用户在正确归类可回收垃圾后,将回收垃圾添加进物品栏里,用户可以使用回收的垃圾进行DIY操作,并在网上发布上传和展示自己DIY的物品。由于时间和技术力有限,目前只实现了游戏的基础功能,在今后会加强学习,学习如何实现其功能的技术,如果想到了更多的游戏想法,会进行尝试实现,让游戏更具有可玩性,能够更好的普及让更多的群众主动游玩教育性游戏。增加更多的游戏场景。由于不擅长模型的制作和场景搭建的困难,目前游戏只制作了两类游戏场景,在今后完善游戏的建模,根据生活中不同场景,搭建更多的游戏场景提高游戏的可玩性,也能增加更多的教育知识。

参考文献□[1]百度百科.垃圾分类[EB/OL],/item/%E5%9E%83%E5%9C%BE%E5%88%86%E7%B1%BB/2904193?fr=aladdin[2]刘桂元,曾志远,杨书新.基于Unity3d引擎的教育类游戏设计与实现[J].软件导刊,2017,(01):50-53.[3]李兵川.基于Unity3D游戏开发流程分析[J].重庆:重庆科创职业学院,402160[4]百度百科.Unity3D[EB/OL],/item/Unity3D/3064002?fr=aladdin[5]程彬彬,王明鑫,商楠.浅谈游戏开发平台Unity3D的应用与发展前景[J].辽宁沈阳:沈阳理工大学,110159[6]百度百科.物理引擎[EB/OL],/item/%E7%89%A9%E7%90%86%E5%BC%95%E6%93%8E/411065?fr=aladdin[7]百度百科.C#[EB/OL],/item/c%23[8]卢毅,周维,高语阳.基于Unity3D引擎的虚拟测量设备的设计[J].苏州中科天启遥感科技有限公司,江苏苏州215000;南京航空航天大学航天学院,江苏南京210016[9]李威,武家弘,宋海玉,王巍,王鹏杰.基于Unity3D的滑板运动游戏的设计与实现[J].大连民族大学计算机科学与工程学院,《大连民族大学学报》2018年第01期[10]薛玉倩.基于Unity3D可视化数据中心的构建[J].河北保定:河北软件职业技术学院软件工程系,071002[11]汪俊峰,王星东,张海龙.基于Unity3D的图书馆三维查询研究[J].河南工业大学信息科学与工程学院,北京市地质矿产勘查开发局,《河南科技》2018年第11期[12]杨镇豪,田垒,朱留川.基于Unity3D的火灾逃生模拟系统的实现[J].东北师范大学,吉林省长春市130117,《电子技术与软件工程》2018年第01期[13]任诺文.基于Unity3d的多出口行人流疏散仿真[J].内蒙古:内蒙古大学.2018年4月25日[14]CyRo.碰撞体[EB/OL]./u012487582/article/details/17686155,2013年12月[15]百度百科.第一人称射击游戏[EB/OL],/item/%E7%AC%AC%E4%B8%80%E4%BA%BA%E7%A7%B0%E5%B0%84%E5%87%BB%E6%B8%B8%E6%88%8F/1733838?fr=aladdin[16]段薛孔,李潼,朱旭东,吴兰.Unity3D游戏场景中人物角色动画的设计[J].安徽:电脑知识与技术期刊,2019.15-9[17]小白菜小青菜.角色控制器[EB/OL],/lihao161530340/article/details/90509935,2019年5月[18]张利强.基于AR+Unity3D的廉洁游戏——急速廉球[J].内江师范学院计算机科学学院,《电脑知识与技术》2017年第19期[19]百度文库.基于Unity3D的汽车驾驶游戏的设计与实现[Z]./view/7ba1f8b8951ea76e58fafab069dc5022aaea46c9.html?qq-pf-to=pcqq.c2c,2017年8月[20]木子三人.浅谈NGUI和UGUI的区别[EB/OL],/qq498846730/article/details/78289762,2017年10月[21]兜兜_2925.UGUI基础[EB/OL],/p/04432f3cf664,2019年4月

致谢本学位论文及研究在我的指导老师杨超老师的悉心指导和亲切关怀下完成。在生活和论文方面的问题上,杨超老师都会详细的回复和认真的解答。他严谨的治学精神和精益求精的工作作风,在我的论文撰写上起到了决定性的指导作用。这种严谨的治学精神深深的激励和感染了我。 这段经历将会使我受益终身,在此谨向杨超老师致以崇高的敬意以及由衷的谢意。同时还要感谢我的老师,同学和朋友们,正是由于你们的支持和帮助,才能克服各种困难疑惑,使论文顺利的完成。最后还要感谢含辛茹苦养大我的父母,谢谢你们,养育之恩无法回报,你们永远健康快乐便是我最大的心愿。在论文即将完成之际,我的心情久久无法平静下来,四年的大学生活也即将划上句号,总结了四年来学习的知识,回顾论文撰写和项目制作的过程,我体验到了作为工作技术人员的艰辛,为今后的工作生活打下了坚实的基础。最后再一次感谢我的指导老师以及一直关系鼓励帮助我的校领导、老师和一起奋斗的同学们,也感谢学院提供优秀的学习环境。

附录资料:不需要的可以自行删除HYPERLINK不用鼠标怎么用键盘操作电脑.有哪些快捷键?快捷键大全F1显示当前程序或者windows的帮助内容。F2当你选中一个文件的话,这意味着“重命名”F3当你在桌面上的时候是打开“查找:所有文件”对话框F10或ALT激活当前程序的菜单栏windows键或CTRL+ESC打开开始菜单CTRL+ALT+DELETE在win9x中打开关闭程序对话框DELETE删除被选择的选择项目,如果是文件,将被放入回收站SHIFT+DELETE删除被选择的选择项目,如果是文件,将被直接删除而不是放入回收站CTRL+N新建一个新的文件CTRL+O打开“打开文件”对话框CTRL+P打开“打印”对话框CTRL+S保存当前*(糙)*作的文件CTRL+X剪切被选择的项目到剪贴板CTRL+INSERT或CTRL+C复制被选择的项目到剪贴板SHIFT+INSERT或CTRL+V粘贴剪贴板中的内容到当前位置ALT+BACKSPACE或CTRL+Z撤销上一步的*(糙)*作ALT+SHIFT+BACKSPACE重做上一步被撤销的*(糙)*作Windows键+M最小化所有被打开的窗口。Windows键+CTRL+M重新将恢复上一项*(糙)*作前窗口的大小和位置Windows键+E打开资源管理器Windows键+F打开“查找:所有文件”对话框Windows键+R打开“运行”对话框Windows键+BREAK打开“系统属性”对话框Windows键+CTRL+F打开“查找:计算机”对话框SHIFT+F10或鼠标右击打开当前活动项目的快捷菜单SHIFT在放入CD的时候按下不放,可以跳过自动播放CD。在打开word的时候按下不放,可以跳过自启动的宏ALT+F4关闭当前应用程序ALT+SPACEBAR打开程序最左上角的菜单ALT+TAB切换当前程序ALT+ESC切换当前程序ALT+ENTER将windows下运行的MSDOS窗口在窗口和全屏幕状态间切换PRINTSCREEN将当前屏幕以图象方式拷贝到剪贴板ALT+PRINTSCREEN将当前活动程序窗口以图象方式拷贝到剪贴板CTRL+F4关闭当前应用程序中的当前文本(如word中)CTRL+F6切换到当前应用程序中的下一个文本(加shift可以跳到前一个窗口)在IE中:ALT+RIGHTARROW显示前一页(前进键)ALT+LEFTARROW显示后一页(后退键)CTRL+TAB在页面上的各框架中切换(加shift反向)F5刷新CTRL+F5强行刷新激活程序中的菜单栏F10执行菜单上相应的命令ALT+菜单上带下划线的字母关闭多文档界面程序中的当前窗口CTRL+F4关闭当前窗口或退出程序ALT+F4复制CTRL+C剪切CTRL+X删除DELETE显示所选对话框项目的帮助F1显示当前窗口的系统菜单ALT+空格键显示所选项目的快捷菜单SHIFT+F10显示“开始”菜单CTRL+ESC显示多文档界面程序的系统菜单ALT+连字号(-)粘贴CTRL+V切换到上次使用的窗口或者按住ALT然后重复按TAB,切换到另一个窗口ALT+TAB撤消CTRL+Z使用“Windows资源管理器”的快捷键如果当前选择展开了,要折叠或者选择父文件夹左箭头折叠所选的文件夹NUMLOCK+负号(-)如果当前选择折叠了,要展开或者选择第一个子文件夹右箭头展开当前选择下的所有文件夹NUMLOCK+*展开所选的文件夹NUMLOCK+加号(+)在左右窗格间切换F6可以使用Microsoft自然键盘或含有Windows徽标键的其他任何兼容键盘的以下快捷键。在任务栏上的按钮间循环WINDOWS+TAB显示“查找:所有文件”WINDOWS+F显示“查找:计算机”CTRL+WINDOWS+F显示“帮助”WINDOWS+F1显示“运行”命令WINDOWS+R显示“开始”菜单WINDOWS显示“系统属性”对话框WINDOWS+BREAK显示“Windows资源管理器”WINDOWS+E最小化或还原所有窗口WINDOWS+D撤消最小化所有窗口SHIFT+WINDOWS+M关闭所选文件夹及其所有父文件夹按住SHIFT键再单击“关闭按钮(仅适用于“我的电脑”)向后移动到上一个视图ALT+左箭头向前移动到上一个视图ALT+右箭头查看上一级文件夹BACKSPACE五、使用对话框中的快捷键目的快捷键取消当前任务ESC如果当前控件是个按钮,要单击该按钮或者如果当前控件是个复选框,要选择或清除该复选框或者如果当前控件是个选项按钮,要单击该选项空格键单击相应的命令ALT+带下划线的字母单击所选按钮ENTER在选项上向后移动SHIFT+TAB在选项卡上向后移动CTRL+SHIFT+TAB在选项上向前移动TAB在选项卡上向前移动CTRL+TAB如果在“另存为”或“打开”对话框中选择了某文件夹,要打开上一级文件夹BACKSPACE在“另存为”或“打开”对话框中打开“保存到”或“查阅”F4刷新“另存为”或“打开”对话框F5选择项目时,可以使用以下快捷键。目的快捷键插入光盘时不用“自动播放”功能按住SHIFT插入CD-ROM复制文件按住CTRL拖动文件创建快捷方式按住CTRL+SHIFT拖动文件立即删除某项目而不将其放入SHIFT+DELETE“回收站”显示“查找:所有文件”F3显示项目的快捷菜单APPLICATION键刷新窗口的内容F5重命名项目F2选择所有项目CTRL+A查看项目的属性ALT+ENTER或ALT+双击可将APPLICATION键用于Microsoft自然键盘或含有APPLICATION键的其他兼容键七、Microsoft放大程序的快捷键这里运用Windows徽标键和其他键的组合。Windows徽标+PRINTSCREEN将屏幕复制到剪贴板(包括鼠标光标)Windows徽标+SCROLLLOCK将屏幕复制到剪贴板(不包括鼠标光标)Windows徽标+PAGEUP切换反色。Windows徽标+PAGEDOWN切换跟随鼠标光标Windows徽标+向上箭头增加放大率Windows徽标+向下箭头减小放大率八、使用辅助选项快捷键目的快捷键切换筛选键开关右SHIFT八秒切换高对比度开关左ALT+左SHIFT+PRINTSCREEN切换鼠标键开关左ALT+左SHIFT+NUMLOCK切换粘滞键开关SHIFT键五次切换切换键开关NUMLOCK五秒用AIT+TAB还有微软微标的个键,方向键。最多的是用到AITF1显示当前程序或者windows的帮助内容。F2当你选中一个文件的话,这意味着“重命名”F3当你在桌面上的时候是打开“查找:所有文件”对话框F10或ALT激活当前程序的菜单栏windows键或CTRL+ESC打开开始菜单CTRL+ALT+DELETE在win9x中打开关闭程序对话框DELETE删除被选择的选择项目,如果是文件,将被放入回收站SHIFT+DELETE删除被选择的选择项目,如果是文件,将被直接删除而不是放入回收站CTRL+N新建一个新的文件CTRL+O打开“打开文件”对话框CTRL+P打开“打印”对话框CTRL+S保存当前*(糙)*作的文件CTRL+X剪切被选择的项目到剪贴板CTRL+INSERT或CTRL+C复制被选择的项目到剪贴板SHIFT+INSERT或CTRL+V粘贴剪贴板中的内容到当前位置ALT+BACKSPACE或CTRL+Z撤销上一步的*(糙)*作ALT+SHIFT+BACKSPACE重做上一步被撤销的*(糙)*作Windows键+M最小化所有被打开的窗口。Windows键+CTRL+M重新将恢复上一项*(糙)*作前窗口的大小和位置Windows键+E打开资源管理器Windows键+F打开“查找:所有文件”对话框Windows键+R打开“运行”对话框Windows键+BREAK打开“系统属性”对话框Windows键+CTRL+F打开“查找:计算机”对话框SHIFT+F10或鼠标右击打开当前活动项目的快捷菜单SHIFT在放入CD的时候按下不放,可以跳过自动播放CD。在打开word的时

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论