




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于Unity3D的中国古代文物科普类游戏的设计和实现 Design and implementation of Chinese ancient cultural relic science game based on unity3D内容摘要文物之所以是文物,是因为它承载了自己祖国的文化,见证了自己祖国的历史。但是随着时间的流逝,文物慢慢变得不为人所知。当今社会,有太多的小孩子因为繁重的学业和大量的补习班课程,而没时间去认识自己国家的文化历史,仅有的休息时间,也会被作业与玩具去填满,长此以往,博物馆将渐渐泯然于众人矣,而不再繁荣,这导致了博物馆里的文物,更是越来越少人去关注它们。为了不再让宝物
2、蒙尘,国家也是想尽办法让人们重新认识这些文物,比如中央电视台的国家宝藏;比如一些学校会组织学生一起去看博物馆;比如把历史遗迹变成旅游景区,然后在遗迹旁边做一个小小的文物展等等。关键词: 文物实现技术 博物馆 文化 历史 Unity3D 虚拟仿真Abstract Cultural relics are cultural relics because they bear the culture of their own country and witness the history of their own country.But as time went by, the artifacts sl
3、owly became unknown.In todays society, there are too many children because of heavy study and a lot of cram school classes, but dont have time to know your countrys culture and history, the only time to rest, will also be assignments and toys to fill, in the long run, the museum will gradually weave
4、 on the past, instead of prosperity, and this led to the museum of cultural relics, but also less and less people to pay attention to them.In order to no longer let the treasures dust, the country is also trying to make people re-recognize these cultural relics, such as CCTVs NATIONAL TREASURE;For e
5、xample, some schools will organize students to go to the museum together;For example, turn the historical site into a tourist attraction, and then make a small cultural relics exhibition next to the site.Key words:The realization technology of cultural relics Museum Cultural History Unity3D Virtual
6、simulation目 录1.绪论 11.1 选题的目的和意义 11.2 研究现状 11.3 研究内容 22.技术和开发工具 32.1 Unity 3D引擎 32.1.1 简介 32.1.2 Unity 3D引擎的优点 32.2 使用的其他软件 42.2.1 Cinema 4D软件 42.2.2 3Ds Max软件 42.2.3 Visual Studio软件 42.2.4 Photoshop软件 52.3 C# 开发语言 53.游戏设计 73.1 游戏说明 73.1.1 游戏简介 73.1.2 游戏UI操作 73.1.3 游戏键位操作 73.1.4 游戏结束 73.2 游戏模块划分 83.3
7、 模块说明分析与设计 83.3.1 UI界面模块 83.3.2 角色控制模块 93.3.3 摄像机模块 93.3.4 游戏场景模块 93.3.5 UI逻辑模块 103.3.6 流程逻辑模块 103.4 模块参数名称与数值设计 103.5 小结 104.游戏实现 114.1 场景搭建 114.1.1 创建地板 114.1.2 创建墙壁 124.1.3 创建天花板 124.1.4 创建灯泡灯管和台灯 124.1.5 创建展台和玻璃罩 134.1.6 创建室内装饰 154.1.7 创建文物模型 154.2 创建灯光164.2.1 点亮灯泡 164.2.2 创建粒子效果 174.3 UI模块实现 18
8、4.3.1 UI外观设计 184.3.2 UI控制流程 194.4 角色控制实现 194.4.1 玩家角色行为 194.4.2 第一人称摄像机 204.5 音效添加 224.6 Post-Processing游戏画面优化 224.7 小结 235.游戏运行测试 245.1 游戏测试 245.1.1 设备环境 245.1.2 游戏运行结果 245.2 问题与解决方案 255.3 小结 256.总结与展望 26参考文献 28致谢 29广东东软学院本科生毕业设计(论文)第一章 绪论1.1选题的目的和意义随着时代的进步,人们对于艺术品的追求也逐步提高,而那些有着悠久历史的古代文物艺术品却逐渐被人遗忘,
9、古代文物精美而优雅,虽然这些文物流露着古老腐朽的气息,但从制作的工艺和图案的精美程度,无一不说明古时的匠师是有着大智慧的。可是相比当下,现代工艺的艺术品,不仅优美精巧,而且新颖独特,比起那些深埋已旧古代文物更加的吸引人们的眼球。在五花八门的现代工艺品的环境下,古色古香的文物也就很难再走进大众的视野,为此我开发一款科普古代文物文化的游戏,让更多人了解认识中国古文物,中国古代的艺术品。中国古代文物科普类游戏是一款漫游为主的科普教育向游戏,游戏的场景选择为博物馆,为了让玩家有一定的代入感,建筑风格使用的是宫殿一样的建筑,玩家通过第一视角在场景中移动和浏览古文物。文物的摆放顺序由近到远,越是古老的文物
10、就越是靠后。若玩家在浏览的过程中点击文物可与文物进行互动,与文物交互时,玩家可以使用鼠标对文物进行:放大、移动、旋转等功能,文物的介绍,则会以小故事的叙事方式,让玩家深入了解该文物的历史背景故事及挖掘时间和地点等信息。以此来让更多的人了解中国古文物的演变历程。中国古文物的演变史也是中国古代文化的演变史,从文物上的涂饰、风格,外貌上的结构、雕刻等等,就可以知道当时的人们生活在一种什么的环境地下,或结合历史推测出当时的人们的思想是如何的。然后在通过游戏,将这些信息传达给玩家。为了让人们更好的了解文物,了解文物背后的历史和文化,让人们即使不出门、不旅行,也能通过游戏,身临其境的去了解和学习。1.2研
11、究现状近年来,随着人们生活水平的提高,大部分人们的物质需求基本得到满足,然后五花八门的艺术工艺品走进了大家的视野,古文物也不例外,但是人们对于古文物的认识仅仅处于一个很浅显的层次,难以了解其中的内涵,而又有更多的、更具观赏性的和充满艺术感的现代工艺品,人们自然而然就选择了后者。当然,也有为了适应这个快节奏的社会,为了让更多人了解古文物而奋斗的人,像几年前就有寻宝、国家宝藏等大型的为科普文物的综艺节目,这些节目播出后,的确引起了一部分人的兴趣,以及了解了一些文物的知识,然后想要真正见识一下的想法,又会在这个信息时代的轰炸下消失。为此,我们需要重新找一条新的科普方式,而游戏便是一个不错的想法。21
12、世纪,游戏产业日益发达,各种游戏层出不穷,人们在休息时花在游戏上的时间那是非常多的,特别是学生群体,更是数不胜数,可以通过游戏让小孩子对文物感兴趣,对文物的历史和文化感兴趣,即使不能引起兴趣,也能让他们在其中学习到新的知识,和感受到新的乐趣。1.3研究内容 为了让游戏拥有高质量的游戏体验,并且可以快速的进行制作,建立更加人性化、交互流畅的游戏系统和高质量的场景效果,本次游戏开发的研究内容主要有以下几点: (1).使用Unity制作游戏:充分利用unity的组件来进行游戏制作,可以使游戏运行更加流畅和简洁; (2).灯光与粒子效果:利用light的一些组件,和post-processing等的一
13、些插件来进行画面的提升和修正; (3).模型的创建:模型使用网上的素材和自己创建的模型相结合,配合3D建模软件和Unity自带的组件来进行制作; (4).游戏优化:代码的封装,场景的烘焙渲染,框架的搭建,使得游戏更加流畅高质量的运行; (5).UI的设计:使用Photoshop设计制作游戏UI界面; (6).音效的使用:使用谷歌翻译的读文本功能,录下文物的简介介绍,进行播报;角色走路发出的声音;背景音。第二章 技术和开发工具 2.1 Unity 3D 引擎2.1.1 简介Unity 3D也称Unity,是由 Unity Technologies 公司开发的,该公司致力于使游戏的开发变得更加的简
14、单和“平民化”,并使2D和3D交互式内容的开发变得更加的简单便捷,所以Unity 3D是一个综合性很强的游戏开发软件。Unity 3D 可以在 Windows 和MacOS X下运行,可发布游戏到Windows、Mac、Android等等可以运行游戏的可发布平台上。也可以使用插件发布到网页运行游戏,是个全面且专业的游戏引擎。游戏行业现有的游戏引擎不管是商用的还是免费的都多如牛毛,其中最具代表性的游戏引擎有、虚幻4、cryEngine、寒霜、unreal等等,但是这些游戏引擎都有着各自的缺陷,比如价格昂贵、操作不便、功能不全之类的,使得游戏开发的成本大大增加。而 Unity 公司力求使游戏开发变
15、得“平民化”,提供了所有人都可以轻易开发出游戏的优秀的游戏开发引擎,使开发人员即使是初学者,也可以根据脑洞开发出不错的游戏。Unity 有“团结”的意思。所以Unity 3D的核心含义就是需要建立在团队合作基础上的相互合作才能完成一个或无数个游戏的开发。截止今日,市面上的许多游戏,都可以通过Unity进行开发实现,当然其他的游戏引擎也可以做到开发多种类型的游戏,但Unity 3D却有着强大的跨平台的特性,所以许多初入游戏开发的初学者都是选择Unity 3D来进行学习。2.1.2 Unity 3D 引擎的优点说到Unity 3D就立刻想到它的跨平台能力,它可以支持多种格式的导入,在C4D或3Ds
16、 Max等建模工具上创建的模型可以导出成.fbx格式的文件,或手动拖入,或在Unity中添加导入都可以,操作简单。此外,Unity 3D还带有了物理、粒子、简单的模型系统,并且调用方便。参数几乎都可以可视化,可以在开发过程中直接修改。也自带了很多免费的插件和组件,还专门的学习社区,获取学习资源的效率变得更高了。同时因为Unity 3D的容易上手,从而让很多初学者都选择使用Unity 3D来作为学习制作游戏的第一款游戏开发平台。2.2使用的其他软件2.2.1 Cinema 4D软件Cinema 4D是由MAXON公司开发的,是一款用于创建三维模型,和三维模型运动图形的软件,时常用于影视后期、广告
17、特效、动画制作等方面,也可用于3D建模。Cinema 4D的运行速度高,渲染插件强,其强大的影视功能已经被各大电影、动画公司所挖掘,如今Cinema 4D已经成为了国内制作影视特效后期或者三维动画的主流软件。Cinema 4D应用较为广泛,工业设计、工程制造、建筑设计、环艺设计、游戏设计、广告设计、影视特效、运动图形、栏目包装、科研医疗可视化等,相较于其他的三维建模软件,比如3DsMax,Cinema 4D的操作界面更加的简单和便捷,渲染的时间和效果上都与3DsMax算得上旗鼓相当的。比如说阿凡达这样的巨作,就是使用Cinema 4D制作的特效。场景的部分物体建模使用的是 Cinema 4D
18、软件,由于其自带的素材库十分的丰富,并且在模型制作上可视化程度、简化程度都比其他同类产品要好。在制作场景模型的过程中将会节省大量的时间。并且 Cinema 4D 软件在查看 Unity 3D封包的 FBX 模型十分的方便。使用 Cinema 4D 软件进行 Unity 3D资源的场景排布将很大程度的减少游戏建模的工作量。Cinema 4D的渲染速度非常的快,而且材质的添加和修改也十分的简单易懂,大大提升了建模速度。2.2.2 3Ds Max 软件3Ds Max原名3D Studio Max,是Autodesk公司开发的一款全功能、全方位的三维计算机图形软件。3DsMax是最早流行在市面上的三维
19、软件,通常用于3D游戏设计、影视特效后期、建筑设计等方面,3DsMax的强大之处在于它有很多的插件,来解决制作项目上出现的的问题。相对其他三维软件而言,3DsMax更适合新手入门,上手容易,而且使用者众多,网上的资源会比其他三维软件要多得多,相对来说性价比高,想要的效果都能做得出来,渲染也很逼真,主要是相对其他主流三维软件要稳定。而且网络中的大部分模型资源都是.max格式,需要使用3Ds Max软件来打开,然后将它导出为.fbx格式的文件,然后在Unity 3D中使用。2.2.3 Visual Studio 软件Visual Studio我们一般简称它为VS,它是微软公司旗下的软件集成开发工具
20、产品,不仅是目前Windows平台最流行的应用程序开发环境,而且还是初学者学习编程的入门软件之一,Visual Studio是一个基本完整的开发工具集,囊括了一个软件所需的大部分工具,所编写的目标代码适用于所有微软所支持的平台。Visual Studio的优势无需多言,用过的人都知道,行内有一句话去形容Visual Studio,就是“宇宙IDE”。相较于其他的软件开发工具实在是好太多了,编译速度快、内存占用低、界面好看、代码智能提示、功能多等等,支持多个计算机语言编译,最最重要的是,基本不卡,几乎不死机,相比于Eclipse、xcode真的流畅很多。同时,它也是下载安装Unity开发游戏时必
21、须安装的一款程序开发软件。在本项目中,就是Visual Studio配合着C#语言进行开发的。2.2.4 Photoshop 软件Photoshop又简称PS,是Adobe公司开发制作的一款图片处理软件,普遍应用于平面设计、广告设计、摄影后期等,是设计领域中必不可少的软件。Photoshop毋庸置疑是一款强大的图片处理软件,主要以处理位图为主, 操作简单、界面简洁、功能齐全,Photoshop除了用于平面的视觉效果上之外,还可以应用在三维建模和特效处理上,每一个完整的三维建模模型都有至少一张的材质贴图,而模型为了能达到更高级的效果,就需要对模型展UV,导出UV贴图,然后导入Photoshop里
22、进行图像处理,从而达到想要的效果。PS的功能十分的强大,既可以制作游戏界面按钮的设计,又可以做场景物体的贴图,甚至可以导出法线和凹凸贴图。2.3 C# 开发语言C#语言是由微软公司开发的一种面向对象的高级程序设计语言,并且运行于.NetFramework之上。因为演变自C/C+的原因,C#很多的语法都和C/C+类似,并且简单易学。使用C#开发的应用程序相比起其它编程语言要更简单和快速。C#作为计算机编程语言,C#和Java、C语言等元老级编程语言相比“出生的年龄”较小,虽然C#的年龄较小,但却一点都不逊色于其他编程语言。使用C#语言编程开发更简单易懂,它继承了Java的语法和C语言的面对对象优
23、点,使得C#语言的使用者越来越多,更重要的是,C#可适配微软的开发平台,C#语言具有实用度高、范用性广等特征,对编程新手相对友好,广受编程员喜爱。在Unity 3D里,是支持C#和Java两种脚本语言的,但是相较Java,C#拥有所有Java的优点和特性,而C#比起Java更加的简洁易懂,C#的使用者越来越多就足以说明C#在游戏开发方面比起Java要强大得多,而且Unity的脚本编写工具是Visual Studio,与C#同属一个公司,所以在编写脚本上也有一定的优势。第三章 游戏设计3.1 游戏说明3.1.1 游戏简介周末得空的你,来到到了一个从未来过得博物馆,你因为好奇走了进去,你在里发现了
24、,或听过、或见过、或似曾相识、或耳熟能详的文物在这里展出,你一时间有所诧异,接着开始静静地浏览起来。3.1.2 游戏UI操作(1).游戏启动后,进去游戏开始界面,由游戏界面背景、游戏名称标志、和三个按钮控件组成。按钮包括:“开始游戏”、“游戏说明”、“退出游戏”;(2).点击“退出游戏”按钮,游戏程序关闭;(3).点击“游戏说明”按钮,弹出提示框,内容注明游戏简要介绍和键位操作介绍,一级制作团队的声明介绍;(4).点击“开始游戏”,切换到游戏场景,开始游戏。3.1.3 游戏键位操作(1).玩家移动:玩家可以使用键盘W、A、S、D键或上下左右方向键,来进行前后左右的方向移动;(2).玩家交互:玩
25、家可以通过按下键盘F键,与场景可交互对象进行交互;(3).拖拽旋转:玩家可以通过按下鼠标左键,与场景交互后,拖拽鼠标旋转物体;(4).滑轮缩放:玩家可以通过滑动鼠标中键,缩放交互后的物体;(5).游戏菜单:玩家可以通过按下TAB键,打开菜单,再按一次TAB键关闭游戏菜单3.1.4 游戏结束游戏结束方式有两种,一种是玩家走到展厅门口,按F键与大门进行交互,离开博物馆,即退出游戏;另一种是玩家按下TAB键打开菜单,用鼠标点击“退出游戏”,结束游戏。3.2 游戏模块划分(1).游戏UI界面模块(2).游戏角色控制模块(3).游戏摄像机模块(4).游戏场景模块(5).游戏UI逻辑模块 (6).游戏流程
26、逻辑模块3.3 模块说明分析与设计3.3.1 UI界面模块UI的主题风格为简约风,因此UI设计基本采用环境色或浅色系为基底,暖色调作为搭配,用简洁的矩形或其他多边形的按钮以及边框设计来配合游戏场景的整体感官,让人感觉很舒服,不会觉得突兀。UI可适配不同的屏幕比例及屏幕分辨率。颜色选择参照:选用浅色为背景基调,或者直接使用场景为背景,边饰使用发光白色,按钮字色使用深棕色,游戏名称标志使用浅棕色搭配白色发光边框。其中需要使用以及控制的参数包括:各页UI界面的标识ID,按钮标识ID。开始界面布局及颜色参考:如图3-1图3-1 开始界面参考3.3.2 角色控制模块(1).角色的移动控制:使用WASD或
27、上下左右键分别控制玩家,前、后、左、右方向移动。玩家移动所需使用以及控制的参数有:角色当前坐标位置、方向坐标、初速度、加速度以及最大速度;(2).角色的交互方式:单击F键,使游戏玩家与场景进行交互。按住鼠标左键,可以使物体进行鼠标拖拽旋转。鼠标中键滚轮,可以使物体进行放大缩小。玩家交互所需使用以及控制的参数有:识别交互对象,交互后应该打开的场景;交互成功后,识别是场景中的那个物体,获取物体的ID;鼠标左键拖拽旋转的速度;鼠标中键滚轮放大缩小的最大值和最小值;(3).菜单栏弹出:单击TAB键,弹出菜单。弹出菜单栏所需使用以及控制的参数有:判断点击,菜单栏弹出的位置,菜单栏的大小;(4).音效设计
28、:包括走路音效,交互音效以及UI交互的音效。3.3.3 摄像机模块摄像机视角为第一人称视角,摄像机的方向跟随鼠标的方向,限制摄像机的Z轴旋转,防止左右倾斜,然后把摄像机放在充当Player物体的子物体上,然后根据鼠标的坐标变化去改变摄像机视角方向,所需要参数:鼠标坐标,摄像机角度。3.3.4 游戏场景模块(1).场景主题:以一个中式的博物馆展厅为主题,创建一个比较宽阔的室内场景,把物体规则的摆放,进行展出,物体排放在桌子上,用玻璃把它们罩住,从而形成一个展厅;(2).模型导入:模型基本是白膜,导入Unity 3D后再通过shader来调整材质以及贴图,导入的模型面数尽量要少,太多到后期烘焙会很
29、花时间2;(3).场景灯光:有一个环境光,有灯泡发光,以及在物体周围有聚光灯,聚光的灯光周围有一些灰尘的粒子效果;(4).场景音效:靠近物体时,会有语音介绍;场景有背景音。3.3.5 UI逻辑模块通过专属于UI的脚本文件去控制UI的界面跳转。其中需要使用的参数是:UI界面的标识ID,按钮标识ID。3.3.6 流程逻辑模块通过流程逻辑管理脚本文件管理游戏的各项数据变化,以此判断游戏的状态,是开始还是结束。其中所需使用以及控制的参数有:游戏时长,交互对象,游戏开始和退出游戏页面。3.4 模块参数名称与数值设计参数名字数据名称类型数值/约束备注开始界面Strart SceneInt0移动初速度Spe
30、edFloat10移动最大速度maxSpeedFloat50鼠标X坐标mouseXVaule3鼠标Y坐标mouseYVaule3X轴拖拽旋转速度xSpeedFloat250Y轴拖拽旋转速度ySpeedFloat120按钮 开始游戏btnStagameClick_StaGame方法名按钮 游戏说明btnGameinxClick_GameInx方法名按钮 开始游戏btnEscgameClick_EscGame方法名3.5 小结本章主要完成了游戏的设计思路,以及一些数据的分配,还有模块的划分,设计好了游戏的大纲,玩法和说明。设计好了各个参数的名称和作用。第四章 游戏实现4.1 场景搭建4.1.1 创
31、建地板首先在网上找到一张适合的textures贴图,然后在unity中新建一个folder,命名为floor将贴图放到里面去。然后在场景新建一个plane,将贴图放上去,调整一下Metallic和Smoothness的值,使其可以像大理石瓷砖一样可以反射,然后再调整一下Tiling的值,然地板看上去更加自然:如下图4-1、图4-2图4-1 地板图4-2 Metallic和Smoothness的值接着开始调整大小,地板大小视情况而定。4.1.2 创建墙壁创建一个立方体,将立方体进行拉伸,变成一面墙壁,新建一个Materials文件夹,给墙壁立方体创建一个材质,将Metallic和Smoothne
32、ss的值调低一些,然后使用Ctrl+C、V进行复制粘贴,通过移动旋转将地板围起来,形成一个密闭的房间。4.1.3 创建天花板天花板是一个与地板同长宽的立方体,赋予一个与墙壁相近的材质,颜色可以偏暖色一些。4.1.4 创建灯泡灯管和台灯在Cinema 4D里面创建灯泡、灯管和台灯,给灯泡灯管赋予材质,然后将它们分别导出为.fbx或.dae格式的文件,导入Unity 3D中去,先给灯泡创建一个新的材质,选好颜色,在shaderMain Map下,勾选Emission,使得灯泡物体可以自发光,点开HDR,找到选择好的颜色,将Intensity光照强度调高一点点,让灯泡看上去很亮的,新建一个Spotl
33、ight,让它对齐灯泡所在的位置,Spotlight的光放射的方向与灯泡方向一致,然后联组(或者在灯泡物体下,直接添加light组件,Type改成spot)。然后调整Spotlight的位置如下图:图4-3图4-3 灯光Spotlight与灯泡位置调整聚光灯做好一个后,将其保存到Prefab文件夹里。然后所有的灯光有序的摆放在天花板上,吸附对齐。特殊的灯光根据需要摆放装饰。4.1.5创建展台和玻璃罩使用Cinema 4D创建展台加玻璃罩,附上材质后导出模型文件,然后将导入Unity 3D中的showcase文件夹,获取贴图和材质文件,点击模型的ModelGeometry,勾选Generate
34、Lightmap UVs,在接下来的烘焙和渲染中需要用到(每个外来文件都要勾选)。玻璃罩效果:选择玻璃罩物体模型,打开材质,将Rendering Mode改成Transparent(透明),然后调一下颜色,将透明度降低,将折射率调到最大,形成一个接近玻璃的效果,然后在场景中创建一个Reflection Probe(反射探头)将其笼罩进整个场景,这时玻璃罩的效果就实现了。如下图:4-4、4-5图4-4 玻璃材质参数图4-5 反射探头参数设置4.1.6 创建室内装饰添加一些挂画在场景的墙壁上,将挂画物体材质的折射率调低至三分之一左右,复制粘贴几份,然后均匀分布在两侧的墙壁上,给每一个挂画物体附上不
35、同的贴图,使每一幅挂画都是不一样的。4.1.7 创建文物模型根据网上调查和自己的印象去搜索,挑选出自己认为最值得展出的文物,然后创建出它们的模型,如下图:4-6、4-7图4-6 后母戊鼎(模型之一)图4-7 传国玉玺(模型之一)创建和下载好模型后,将它导入Unity 3D项目中,摆放在展台上吸附对齐,调整贴图和材质,利用金属性和折射率将模型的放射调整至一个适合的效果。4.2 创建灯光4.2.1 点亮灯泡给灯泡物体模型添加一个Spotlight(或者给灯泡物体添加Light组件,Yype改成spot聚光灯),调整位置后,修改参数:修改放光颜色为橙色,调整照射距离和大小,增加反射次数,添加软阴影。
36、如下图:图4-8图4-8 Spotlight的Light组件参数然后灯泡材质球也要修改,给它添加自发光,勾选Emission ,并改其颜色为橙色,调整放光强度,如下图:图4-9图4-9 灯泡材质球参数其他大灯与灯泡相同操作,但是灯的颜色和形状略有不同。4.2.2 创建粒子效果创建一个Particle System,命名为灰尘,调整参数,让粒子碰到墙壁会反弹,打开场景时可以预载,改颜色为灰色,向四周飘散,有反光材质,数量很多。具体数据如下图:图4-10、图4-11图4-10 粒子效果参数(1)图4-11 粒子效果参数(2)4.3 UI模块实现4.3.1 UI外观设计直接使用场景正面的场景作为背景
37、图,添加是三个Button,使用预设样式,利用网上艺术字在线编辑,选用Berlin Sans FB,加粗,选择颜色,勾选发光以及描边,调整一下,使其达到自己想要的效果:字体文本:如图4-12图4-12 字体文本调整预设,成效:如图4-13图4-13 字体成效用同样的方法去制作其他按钮的字体,做完字体后开始拼接开始界面。使用Photoshop来制作菜单栏的边框和背景,白色半透明为底,深色渐变为边框。接着制作按钮颜色,同样用Photoshop制作,灰色半透明为底色,加上黑色边框,圆角。4.3.2 UI控制流程 玩家可通过功能按钮来跳转界面,按“开始游戏”后,先是逐渐黑屏,进入场景逐渐亮屏,“退出游
38、戏”离开场景时,也是使用逐渐隐藏的效果,UI跳转流程如下:4.4角色控制实现4.4.1玩家角色行为玩家通过WASD或者上下左右方向键控制角色移动,其中WASD与方向键都可用Unity中GetAxis获取值,交互键可设置GetKeydown来获取F键。设PlayerMove方法来操控角色在博物馆中以初速度为Speed,最大速度为maxSpeed来移动。当玩家走到一个物体前,先判断它是否可以进行交互:如果不是,则什么也没发生;如果是,屏幕中央弹出提示,“按F键”。在可交互对象面前:如果玩家按下了F键,则进入物体浏览模式;如果玩家没有按下F键,则什么也没发生1。玩家在进入浏览模式时,可以对物体进行拖
39、拽旋转和放大缩小观察的功能11:/旋转最大角度 public int yMinLimit = -20; public int yMaxLimit = 80; /旋转速度 public float xSpeed = 250.0f; public float ySpeed = 120.0f; /旋转角度 private float x = 0.0f; private float y = 0.0f; void Update() if (Input.GetMouseButton(0) /Input.GetAxis(MouseX)获取鼠标移动的X轴的距离 x += Input.GetAxis(Mouse
40、 X) * xSpeed * 0.02f; y -= Input.GetAxis(Mouse Y) * ySpeed * 0.02f; y = ClampAngle(y, yMinLimit, yMaxLimit); /欧拉角转化为四元数 Quaternion rotation = Quaternion.Euler(y, x, 0); transform.rotation = rotation; else if (Input.GetAxis(Mouse ScrollWheel) != 0) /鼠标滚动滑轮 值就会变化 if (Input.GetAxis(Mouse ScrollWheel) 0
41、) /范围值限定 if (Camera.main.fieldOfView = 100) Camera.main.fieldOfView += 2; if (Camera.main.orthographicSize 0) /范围值限定 if (Camera.main.fieldOfView 2) Camera.main.fieldOfView -= 2; if (Camera.main.orthographicSize = 1) Camera.main.orthographicSize -= 0.5F; /角度范围值限定 static float ClampAngle(float angle,
42、float min, float max) if (angle 360) angle -= 360; return Mathf.Clamp(angle, min, max);4.4.2 第一人称摄像机摄像机可以随着玩家移动而移动,鼠标控制视角,开始游戏隐藏鼠标,将相机放到Player的子物体上,这样玩家移动时,摄像机就会跟着移动,通过获取鼠标的坐标来旋转视角:/这行代码是声明一个CharacterController类;CharacterController playerController;/声明3维向量; Vector3 direction; public float speed = 1;
43、 /主角的移动速度 public float jumpPower = 5;/主角跳的高度 public float gravity = 7f; /重力 public float mousespeed = 5f; /鼠标快慢 public float minmouseY = -45f; /限制鼠标y轴 public float maxmouseY = 45f; float RotationY = 0f; float RotationX = 0f; /这两个存放的是鼠标输入 public Transform agretctCamera;/摄像机存放的位置/ Use this for initial
44、izationvoid Start () playerController = this.GetComponent(); /获取依附在这个物体上的CharacterController组件 Screen.lockCursor = true; /鼠标隐藏 / Update is called once per framevoid Update () float _horizontal = Input.GetAxis(Horizontal); /将水平轴的给_horizontal float _vertical = Input.GetAxis(Vertical); /同上 if (playerCo
45、ntroller.isGrounded)/检测是否到地面 direction = new Vector3(_horizontal,0,_vertical); /在地面上才能移动,这个是移动向量 if (Input.GetKeyDown(KeyCode.Space) /检测你是否按下了空格键 direction.y = jumpPower; /如果按下了空格键就三维向量中的y轴等于jumpPower direction.y -= gravity * Time.deltaTime; /玩家向下的速度 playerController.Move(playerController.transform.
46、TransformDirection(direction*Time.deltaTime*speed); RotationX += agretctCamera.transform.localEulerAngles.y + Input.GetAxis(Mouse X) * mousespeed; /存放摄像机(也就是鼠标)x轴 RotationY -= Input.GetAxis(Mouse Y) * mousespeed; /存放摄像机(也就是鼠标)y轴 RotationY = Mathf.Clamp(RotationY,minmouseY,maxmouseY); /限制鼠标上下 this.tr
47、ansform.eulerAngles = new Vector3(0,RotationX,0); 主角的y轴旋转 agretctCamera.transform.eulerAngles = new Vector3(RotationY, RotationX, 0); /这个是摄像机上下左右。4.5 音效添加当玩家控制角色移动时,会发出脚步声。当人物第一次靠近文武时,文物展台会自动播放事先利用谷歌读句录下的声源,简单介绍文物的历史背景,当人物离开一定范围后开始计时,五分钟后,如果玩家再一次靠近,则重复播报,若没有,或者玩家取消播报,则不会播放。展厅一直播放着背景音乐,知道歌曲播完或者玩家取消背景
48、音乐,如果是自动停止播放的,在五分钟后会循环播放,直到歌曲播放完毕或者玩家取消为止。玩家点击UI按钮时,会有反馈音效,按F键交互时,也有反馈音效。4.6 Post-Processing游戏画面优化Unity 3D 2018版本的post-processing是在Windowpackage Manager中下载。新建一个Post-processing Profile,添加需要的effect,然后在Main Camera添加Post Process Volume组件,然后将新建的Post-processing Profile添加到组件的Profile上,然后调整Post-processing Pr
49、ofile的参数,如下图4-14:图4-14 Post-processing Profile的参数调整4.7 小结本章主要制作了游戏的场景制作和角色的控制器系统,以及音效的添加。然后使用场景的烘焙渲染,代码的封装,使得游戏进一步流畅的运行。为了使场景更加好看,我还是用了Post-processing进行后期处理。第五章 游戏运行测试5.1 游戏测试5.1.1 设备环境(1).CPU:Intel i5-6300HQ/2.30GHz(2).运行内存 RAM:12G(3).系统:Windows 10 64 位(4).分辨率:1920*1080(5).游戏引擎:Unity3d 游戏开发引擎5.1.2游戏运行结果(1).UI界面:游戏UI运行成功,无卡顿现象;(2).场景跳转:场景渐隐渐现效果成功,未出现卡顿现象;(3).角色控制:按“WASD”键与上下左右方向键,都可以控制角色移动,移动鼠标时,视角也跟着同向旋转移动,旋转速度略慢,未出现卡顿现象;(4).光照效果:灯泡和灯管都正常发光,粒子效果正常运行;(5).音效控制:点击按钮会有音效反馈,可在菜单中修改静音或者音量大小。进入场景后,会有音乐播放,同样可以在菜单中修改音量。靠近文物时,会有语音播报,语音播报结束后,等5分钟,文物展台会重新播报一次
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医生知识竞赛试题及答案
- 初中安全试题及答案
- 2025年考生策略与试题及答案总结
- 宾馆租房协议书合同范本
- 网络规划设计之路与试题及答案分享
- 2024年中考历史命题猜想中国境内人类的活动早期国家的产生与社会变革无答案
- 系统集成项目中的信息管理技术试题及答案
- 学术规范的中级社会工作者考试试题及答案
- 17机械基础试题及答案
- 雕刻印章美术考试题及答案
- GB/T 42441-2023仿生学仿生材料、结构和构件
- 2023年中电信数智科技有限公司招聘笔试题库及答案解析
- GB 1886.358-2022食品安全国家标准食品添加剂磷脂
- GB/T 1508-2002锰矿石全铁含量的测定重铬酸钾滴定法和邻菲啰啉分光光度法
- GA/T 1788.3-2021公安视频图像信息系统安全技术要求第3部分:安全交互
- 小学六年级信息技术复习题
- 食品安全培训(食品安全知识)-课件
- 初二物理新人教版《功》公开课一等奖省优质课大赛获奖课件
- 北京大学国际政治经济学教学大纲
- 合肥市建设工程消防设计审查、消防验收、备案与抽查文书样式
- 《电气工程基础》熊信银-张步涵-华中科技大学习题答案全解
评论
0/150
提交评论