基于unity3D的解密游戏的设计与实现.doc

上传人:封****n 文档编号:96763149 上传时间:2024-03-19 格式:DOC 页数:29 大小:633.21KB
返回 下载 相关 举报
基于unity3D的解密游戏的设计与实现.doc_第1页
第1页 / 共29页
基于unity3D的解密游戏的设计与实现.doc_第2页
第2页 / 共29页
点击查看更多>>
资源描述

《基于unity3D的解密游戏的设计与实现.doc》由会员分享,可在线阅读,更多相关《基于unity3D的解密游戏的设计与实现.doc(29页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、摘要随着如今互联网时代的到来,人们的生活方式也因互联网影响,发生了许多改变。1958年的Tennis for Two被公认为世界第一款电子游戏,随后80年代家庭游戏机的普及,让许多人的童年回忆变成了黑白屏的电子游戏。如今电子游戏被称为人类历史上的第九艺术,它使得人们的精神世界得到一种新的艺术来源。近几年随着移动终端及互联网的发展,游戏玩家群体呈现扩大化趋势,行业总值也在不断升高,其中游戏引擎Unity越来越受到广大游戏开发者的喜爱与使用。而且目前市场上主流游戏大多数是射击类以及MOBA类型游戏,玩家们也希望能接触到更多类型玩法的游戏。本论文将实现一款基于Unity3D的第三人称类型的解密游戏,

2、这将区别于传统的密室解密游戏,第三人称的动作视角比传统第一人称的2D视角会带给玩家更好的体验与沉浸感,键鼠的操作比传统的鼠标点击解密带来操作感会更强,且关卡融入益智谜题让玩家在游玩时间也能得到一次满足的头脑风暴,因此我解密游戏还是有相当可观的发展前景的。本文主要描述了游戏的开发原理,以及详细的设计与实现,为后来希望开发同类游戏的研究者者们提供借鉴与参考。关键词:Unity3D解密游戏益智AbstractWith the advent of the Internet age, peoples lifestyle has changed a lot due to the impact of the

3、 Internet. In 1958, tennis for two was recognized as the first video game in the world. Then, with the popularity of home games in the 1980s, many peoples childhood memories became black-and-white video games. Nowadays, video game is called the ninth art in human history. It makes peoples spiritual

4、world get a new art source.In recent years, with the development of mobile terminals and the Internet, the group of game players is expanding, and the total value of the industry is also increasing, in which the game engine unity is more and more loved and used by the majority of game developers. At

5、 present, most of the mainstream games in the market are shooting games and MoBa type games, and players also hope to have access to more types of games.This paper will implement a third person decryption game based on unity3d, which will be different from the traditional secret room decryption game

6、. The third person action perspective will give players a better experience and immersion than the traditional first person 2D perspective. The key mouse operation will bring a stronger sense of operation than the traditional mouse click decryption, and the level will be integrated with puzzle puzzl

7、e to let players play time Can also get a satisfying brainstorming, so I decrypt the game still has considerable prospects for development.This paper mainly describes the development principle of the game, as well as the detailed design and implementation, to provide reference for the researchers wh

8、o hope to develop similar games later.Key words: unity3d decryption game puzzle目录第一章绪论.11.1课题背景、目的及意义11.2国内外研究现状11.3论文组织结构2第二章开发工具32.1unity3D引擎32.2.1unity3D引擎的跨平台开发32.2.2物理引擎32.2.3GUI界面42.2C#开发语言42.3本章小结4第三章游戏需求分析与设计53.1游戏总体需求分析53.1.1玩家需求分析53.1.2游戏功能需求分析53.2游戏结构方案设计53.3本章小结7第四章游戏功能实现84.1人物移动及相机跟随模块8

9、4.2背包系统模块84.3剧情系统模块104.4火炬谜题模块104.5九宫格拼图机关模块114.6魔法阵谜题模块134.7本章小结14第五章游戏测试155.1测试环境155.2测试计划165.3测试用例及结果17第六章总结22参考文献23致谢24广东东软学院本科生毕业设计(论文)第一章绪论1.1课题的背景、目的与意义如今,随着人们生活质量的不断提高,人们也对业余生活质量的追求越来越高,随着上世纪90年代游戏机引入中国,到现在游戏已成为许多人所优先选择一种休闲方式。近几年游戏行业高速发展,呈现一片欣欣向荣的景象,各互联网巨头也纷纷布局游戏产业,带动行业发展,可以从此看出未来游戏市场的前景十分广大

10、,不止于传统的主机,PC端,就连目前火热的手机移动终端市场,以及未来的VR游戏市场,都具备着十分强大的可挖掘潜力。目前,市面上有类型多种多样的游戏,如经久不衰的FPS类游戏,MOBA类游戏,RPG类游戏,ACT类游戏等等。而且随着多年的发展,两种类型游戏的核心玩法融合在一起,迸发出更加具有创意性的游戏,如守望先锋便是把FPS游戏与MOBA游戏的核心玩法结合在一起,成为当年的最佳游戏。本课题在于使用unity3d设计开发一款解密类游戏,除了本身所带有的解谜核心玩法外,也会增加一些动作元素,相对于以往的解密游戏会增加一些趣味性,同时游戏本身的场景以及整体剧情设计偏向暗黑风格,由此给玩家带来的恐惧感

11、,通过营造恐惧感使得玩家在游玩过程体会到一种刺激感,增强游戏体验,而其中设计的解密关卡,以及收集相关道具解开谜题,这样会使得玩家游玩时充分开发自己的大脑去推理破解谜题,起到一定的益智作用。同时,这类游戏不同于即时类游戏,玩家可随意存档读档,休闲性十分高,不会大量占用业余时间,极大的丰富了玩家的业余生活。因此目标玩家群体,以及市场前景十分广阔1.2国内外研究现状Unity3D引擎是由美国的视频游戏开发商Unity Technologies开发的一款多平台专业游戏开发引擎,unity3D游戏引擎不仅因为其强大的API接口及各种强力插件,为广大游戏开发者们提供了实现各种奇思幻想的游戏创意的能力,而且

12、由于强大的跨平台功能,光大游戏爱好开发者们近年来使用unity3D开发出能在Android、IOS、PC上运行的游戏也越来越多了,在国内外游戏开发领域备受关注。而画面渲染功能更是能与虚幻引擎以及CE3等开发引擎相媲美,unity3D的粒子系统更是能制作出效果非常棒的特效画面。Unity3D引擎在国外的研究使用相比于国内较早,且国外使用unity3D引擎也是制作了众多优秀的游戏精品,如:星际陆战队、The Fores等,国内在unity3D引擎上的应用大多都是在手游上,如腾讯的MOBA类对战手游王者荣耀便是使用的unity3D引擎开发。而且在其他领域如:AR,VR等领域上的研究与使用也是比国内起

13、步较早且更加深入。在国内外使用unity3D引擎开发绝大多数是在Android、iOS系统上运行的手游,在传统PC端及XBOX系统上使用unity3D引擎开发的游戏无论是从数量以及质量上,都不如人意,因此在如今虽然unity3D引擎支持VR、AR等相关领域内容的开发,但绝大多数市场上使用unity3D引擎开发的精品游戏还是属于手游。近几年来,解密类型游戏并不是市场主流游戏,FPS类及MOBA类性的游戏依旧占据着大量游戏市场,国内外的游戏开发公司在这一类型游戏领域也鲜有佳作诞生,而3D第三人称视角类型的解密游戏除了古墓丽影系列外,在主机游戏市场里也没有其他标志性的同类型游戏出现,而国内也鲜有3D

14、第三称视角类型的解密游戏。而国内外使用unity3D引擎开发的解密游戏大多是手游,使用unity3D开发基于Windows的PC端解密游戏目前还是比较少有的。显然基于unity3D的解密游戏目前的研究是比较稀缺且不够深入。1.3论文组织结构论文从最初构思到分析实践,参考了许多unity3D游戏开发相关资料及文献,进行了一个基于unity3D的解密游戏的设计制作,论文主要具体介绍了游戏需求分析及总体设计,游戏具体实现步骤。论文分为六章,各章节安排如下:第一部分:引言,主要内容为介绍了本次论文设计的背景、目的与意义,对国内外对基于unity3D的解密游戏研究现状做一个大概的介绍第二部分:介绍了该解

15、密游戏的大致需求分析与设计,明确游戏的系统框架及游戏主体流程第三部分:详细介绍游戏的各个模块的制作,;第四部分:对本论文的解密游戏运行进行测试,记录测试结果;第五部分:游戏总结,对本论文的解密游戏进行总结并对今后的改进提出方向;第二章开发工具2.1Unity3D游戏引擎Unity3D是一款3D跨平台次时代游戏引擎。它的特性具有一个非常完美的跨平台系统。作为一款游戏引擎,近年来Unity3D能够成为游戏公司及独立游戏开发者们所青睐的主流产品的原因,是因为其能够一键发布在多个电脑平台,包括unity3D非常强大的UI界面,对很多创意插件的支持,多样的物理引擎以及广泛的脚本语言的优点等都是密不可分的

16、。下面将介绍几个主要特性。2.1.1unity3D引擎的跨平台开发Unity3D是通过进行游戏技术开发的专业多平台游戏引擎。它是具有内置开发环境的多平台引擎,其最重要的功能是:可以在所有主要的游戏平台上进行开发。游戏项目完成后,开发人员只需在“文件”菜单中选择空设置,即可在指定平台上实现部署发布。Unity3D单元可以在多平台上发布的原因与其基本代码,各种I/O接口的兼容性以及本地化功能紧密相关,而3D单元的基本代码则采用C#编写,以确保效率和可移植性。Unity3D提供了一个统一的表示形式的控制界面以及一个用于多个输入设备的程序界面,此外,Unity3d还提供了本地化的代码库。在当今的游戏制

17、作中,主机部分和PC部分经常同时出现,PC部分和移动部分同时出现,因为可以通过Internet来实现相互通信,Unity3d的跨平台实现为编译游戏提供了便利的开发环境。游戏公司不再需要处理新平台上的作品开发。同时Unity3D也具备了一个交互感良好的操作界面,Unity3D在Windows和Mac OS环境下部署运行十分完美。该软件自带的五个工程视图:project视图,主要用于存放游戏中的资源文件,hierarchy视图用于布置我们游戏每一个场景中的游戏对象,inspector视图是我们观察当前游戏资源的主要信息,包括其世界坐标位置,物品属性,加载的脚本等,scene视图主要存放我们游戏所需

18、的各类资源文件,game视图是用于我们观察游戏实际运行后的整体情况。Unity3D支持C#、javascript、boo三种脚本语言。2.1.2物理引擎任何一个游戏的设计都需要其物体特性的合理性,这样才显得真实可信。U3D为开发人员提供了大量组件,我们可以通过unity3D引擎提供的各类编辑器可以对对象进行渲染,物体在现实中的各种属性:比如材质,颜色,光线等等可以通过一系列组件进行修改,带给我们很逼真的视觉效果,而在物理特性上添加的刚体,碰撞器等组件,可以实现物体在现实事件中的各种物理特性所受到的物理状态及影响,碰撞后的一切物理变化,会让你觉得感受到一个现实中的物体存在于游戏中。我们可以通过物

19、理引擎打造一个真实逼真游戏世界,也可以修改各种参数打造一个光怪陆离的游戏世界,也正是因为unity3D的物理引擎能为我们所导入的素材添加他们所应该具有的物理属性,所以我们才能赋予他们在游戏世界里的生命。2.1.3GUI界面GUI是图形用户界面的英文简写,而常用的GUI制作方法有两种:需要借助辅助插件的GUI系统被称作NGUI;另一种是Unity内置的GUI系统被称作Unity GUI。NGUI进行UI制作快捷方便,编码方便,但是需要导入插件包。UGUI进行UI制作,作为unity内置的GUI制作工具,其屏幕自适应更加方便使用,并且没有NGUI的图集概念,在资源的利用效率更为高效。2.2C#开发

20、语言C#是微软公司于2000年发布的一种在.NET Framework和.NET Core运行的,面向对象的高级程序设计语言。C#与Java类似,是一种面对对象语言,一种编程语言工具,并且与JAVA语言有着几乎一模一样的语法使用习惯,但与JAVA不同的是,C#借鉴了Delphi,与com是直接集成的。但由于Unity是跨平台的,而C#并不是一种跨平台的语言。在unity开发中只是由于Mono的的重新实现,使得Unity能够使用C#来开发,因此,我们可以在Unity上写C#的代码。语法明了,类库使用方便,是C#的优点,所以这也成为了广大开发者们在Unity开发中首先考虑的语言。2.3本章小结本章

21、节主要介绍了本次游戏开发所使用的的开发工具unity3D引擎,根据其跨平台优势,物理引擎,GUI界面的特性进行介绍总结优点。Unity3D引擎是一款非常优秀的游戏开发引擎,近年来在游戏开发领域及建筑可视化,实现三维动画等相关类型互动内容领域受到越来越多的开发者们追捧使用,其未来布局前景也将十分广阔。第三章游戏需求分析与设计3.1游戏总体需求分析3.1.1玩家需求分析作为一款解密游戏,要具备解密游戏的几大重要要素:剧情,谜题,道具;同时这也是吸引玩家的关键要素。因此我们整体的游戏功能要围绕着这几个重要要素去设计。玩家对于剧情最直观的感受来自于谜题线索,道具等内容,因此我们要做到剧情合理不突兀,谜

22、题逻辑清晰,道具线索动向清晰明了。一个完整且合理的剧情不仅能引导玩家一步步推进游戏进度,随着玩家不断的探索解密拼凑一个完整的故事剧情,在这其中的探索解密过程能激发玩家解密的动力跟热情,且得到一种满足感。在具体游戏体验中要做到操作简单方便,交反馈突出等。这样才能保证游戏的可玩性。3.1.2游戏功能需求分析本游戏由于是解密游戏,其核心玩法在于解开设置的重重谜题关卡,游戏的功能核心也在此。每一个谜题关卡都可以看做是一个个独立的小游戏,他们彼此联系又相互独立,解密方法的多样性,玩家所得到的体验也不同,关卡的可玩性越高,玩家的体验感也相对应的得到一些提升。我们在确保关卡玩法多样性的同时,也要把握关卡难度

23、的设置,做到难易适中,难度太高容易导致大部分玩家不具备过关的操作水平,一遍遍失败后丧失耐性放弃继续游玩的兴趣;而难度太低,无法反馈玩家一种解谜后的成就感和愉悦感,容易导致玩家产生毫无趣味性的乏味感。因此难度适中的谜题设置搭配,这样给予的玩家体验感才能达到我们希望的游戏预期效果。3.2游戏结构方案设计(1)游戏界面模块设计:开始界面,设置界面以及结束界面这是游戏三大主要界面,我们可以使用unity3D引擎中自带的GUI设计模块,同时结合C#编辑脚本代码实现我们所需的反馈事件来进行研发。GUI设计模块我们用来进行界面的整体设计,通过GUI搭建出我们所需要的界面板块,通过使用C#编辑脚本模块监听玩家

24、们的鼠标键盘输入事件,然后反馈事件使得相对的UI变化,以反馈给玩家输入事件是否成功,以及对游戏设置的一些变化。通过C#编辑脚本监听玩家的输入事件,然后我们可以完成开始游戏,结束游戏,调节音效大小等游戏功能设置,同时我们以此完成我们最为重要的对话框界面,反馈剧情信息给我们玩家,同时通过对话系统指引玩家推动游戏进程。同样的背包系统,我们也是如此实现,这样玩家所搜集到的道具便会显示在背包栏内,成为玩家解密的关键线索。(1) 谜题模块设计:根据前文讨论这是我们核心功能,这里实现三个谜题模块,分别为:火炬谜题模块,九宫格拼图谜题模块,魔法阵谜题模块。火炬谜题模块,玩家进入游戏拾取地上的火把,当玩家拾取到

25、火把后,靠近燃烧着的火炬时按下键盘E键,便可点燃火把,用点燃了的火把靠近未燃烧的火炬我们按下键盘F键,便可点燃火炬。按照线索提示按顺序点燃火炬,便可点燃主火炬,触发圣火,打开一扇大门,为接下来的剧情铺垫。这里我们会使用unity3D引擎自带的碰撞器Collider,火把及火炬等道具设置添加相对应的碰撞体Collider,这样当我们的角色添加了Character Controllers角色控制器,当人物与物体之间到一定距离时便可发生碰撞检测,使用函数OnTriggerEnter检测碰撞事件。九宫格拼图模块,玩家移动到我们所设置的画框前,鼠标点击画框,便会触发拼图事件,当玩家使用鼠标点击事件时,唯

26、有点击的拼图碎片与缺失的空白格拼图碎片相邻,两者才会置换位置,通过玩家的思考努力后拼图完成,便可完成此次谜题,得到相对应的道具或者下一谜题的线索。拼图块的制作我们将会使用unity3D引擎自带的Sprite,分割我们的图片素材用来制作我们九宫格拼图的拼图块素材。我们将使用UGUI里的button按钮,同时添加鼠标点击事件代码,实现玩家鼠标点击移动拼图的交互效果。魔法阵谜题模块,玩家在得到线索后,取得所需道具激活魔法阵,激活魔法阵后生成地牢守护者,玩家再次解密取得关键线索道具,开启守护者守护模式,对玩家进行攻击,玩家需要依靠以前所得到的提示,将守护者引到前面火炬谜题所触发的圣火处,守护者靠近圣火

27、处,变回被销毁,掉落最终线索,玩家得到最终线索完成最后一次解密便可通关游戏。这里我们将使用unity3D引擎自带的粒子效果制作魔法阵的粒子特效效果。我们也将使用SetActive()函数用于激活实例化守护者,而守护者的巡逻AI以及攻击玩家,这里将会使用unity3D引擎自带的Navigation自动寻路控件来实现。(2) 背包模块设计:根据谜题模块研究与讨论,道具是我们解开谜题的关键线索,也是解密游戏中主要组成部分。这里我们将实现背包系统用于存储我们所得到的的道具。背包系统实现的主要功能是存储及读取道具数,由于本论文所设计的项目数据较少,因此我们使用轻量级的数据交换格式JOSN用于储存我们所需

28、的数据。(3) 游戏场景设计:解密游戏场景通常为固定场景,场景封闭,根据不同故事背景带有不同建筑风格,根据背景故事本文作品中的场景我们会选择为欧洲中世纪风格的地牢场景。场景素材在游戏开发过程开发者通常使用3D建模软件C4D、3DMAX等创作模型素材,本文作品的场景模型素材采用网上收集而来,unity3D支持常规FBX、MAX等常见格式的模型导入。3.3本章小结本章主要介绍了这次游戏总体框架以及设计思路及原因,本文所研究的解密游戏通过上文陈述,主要是一个欧洲中世纪风格的解密游戏,游戏场景为地牢,主要谜题有三个:火炬谜题,九宫格拼图谜题,魔法阵谜题。同时确定了游戏所需的其他主要功能:背包系统以及剧

29、情系统,通过上文的设计研究,我们确定了游戏的主要结构及玩法,对接下来的具体实现提出初步思路。第四章游戏功能实现4.1人物移动及相机跟随模块(1)传统第三人称视角的角色移动操作方式大多分为两种:鼠标点击地板移动以及键盘输入控制移动。在unity3D里我们每次一个创建的物体都会带有transform组件,上面记录物体当前坐标位置及向量角度方向,通过改变tranform组件内的position属性值我们便可实现世界坐标内的位置变化,从而实现移动的效果。在该游戏中我们采用键盘输入控制移动的方式控制玩家移动,在Unity3D中指令代码:GetAxis和GetButton分别对应着获取玩家的键盘输入和鼠标

30、输入,这是我们完成移动及相机跟随视角的关键指令。我们通过Input.GetAxis()获取键盘输入,按下按钮后GetAxis()的返回值在-1和1之间,把返回值赋给移动向量Vector3()便可确定移动轴移动方向。通过Quaternion.LookRotaction()将Vector3转化为Quaternion,赋值给旋转向量transform,这样便可实现人物移动时的角度转向。(2)在3D游戏中第一人称视角的与第三人称视角的摄像机角度以及设置不同,制作第一人称视角,普遍使用的方法是把摄像机视角的位置与范围调为我们角色视角的位置与观察范围,用摄像机代替人物眼睛观察,因此把摄像机添加进角色子物体

31、便可实现第一人陈视角,而第三人称视角,摄像机是处于一个上帝视角跟随玩家角色,摄像机要观察到玩家角色,而且当人物移动时摄像机需要跟随人物移动,操作者便可以使用鼠标进行水平方向上的视角移动。因此我们需要声明一个值,用于存储摄像机与目标人物间的偏移值,这样在脚本运行时,无论我们如何旋转及移动,摄像机与角色之间的距离都会保持不变以免摄像机丢失人物角色。通过Input.GetAxis(MouseX)获取参数变化,以监测鼠标在X轴上的移动,并通过赋值给Quaternion.Euler()绕Y轴选择实现摄像机水平旋转效果,完成第三人称视角随鼠标水平方向移动的效果。4.2背包系统模块首先我们需要制作背包系统的

32、UI界面,根据前文讨论我们使用unity3D自带的GUI进行制作,在unity3D引擎中有两种常用的GUI制作方法,一种方法是借助辅助插件NGUI,另一种方法则是使用Unity3D引擎自带的UGUI来进行GUI的制作。UGUI相对于NGUI出现较晚,在自适应,渲染及图集方面都比NGUI表现的更为智能,由于UGUI是unity3D引擎自带的,因此不用像使用NGUI时需要额外导入插件包,虽然UGUI在拓展性,灵活性不如NGUI好,但胜在性能优化及我们本次游戏所需要的UGI不需要太过复杂,UGUI可以满足我们的功能需求,所以这里我们将会使用UGUI进行开发UI界面。在Hierarchy面板右键点击选

33、择UI-Image,Canvas是unity3D引擎自定义的画布,所有UGUI的UI组件都得在Canvas画布下作为子物体运行,在没有创建Canvas组件时,创建任何UI组件,unity3D引擎都会帮你自动创建一个Canvas,并将你的UI组件作为子物体添加在Canvas上,同时unity3D引擎也会自动创建EventSystem,用于确定鼠标输入等事件,是我们制作UI界面不可少的一个组件。在Image组件中添加Grid Layout Group网格布局组件,这样我们的背包格UI元素才会按照我们所设置的元素间隔大小,第一个元素起始角,网格行和列的限定数量,完成自动布局,这样我们所加载的元素便可

34、整齐成网格排列。图4-1背包界面接下来是脚本编辑步骤,首先我们需要创建一个JOSN格式的文件,并在里面输入我们所设计需要的数据内容。在创建我们所需的C#脚本,读取JOSN文件内的数据我们需要先下载JOSN官方的插件,加载到我们的项目文件中才可以读取JOSN文件内数据,使用File.ReadAllText()方法传入JOSN文件内的信息,使用JosnMapper对JOSN文本进行解析。创建单独的一个类Item用于存储和获取JOSN文件内的数据信息,然后创建数组存储我们所解析出来的JOSN数据信息。创建一个方法获取数据ID来查找物品数据信息。在创建物品数据时,我们创建了每一个道具相对应的图片名称,

35、通过使用Resources.Load()方法加载存储在Resources文件中的图片,将图片添加至我们的预制体中。道具加载方法Additem()如下:publicvoidAdditem(int_id)ItemitemToAdd =itemdatabase.FetchItemByID(_id);for(inti = 0; i items.Count;i+)if(itemsi.ID = -1)itemsi = itemToAdd;GameObjectitemObj = Instantiate(item);itemObj.transform.position = Vector2.zero;itemO

36、bj.transform.SetParent(slotsi.transform,false);itemObj.GetComponent().sprite = itemToAdd.sprite;break;4.3剧情系统模块在本文游戏中,玩家获取到道具或激活机关得到线索,线索提示是以对话框形式弹出,玩家通过阅读对话框内的信息内容,获取有用信息成为线索用于破解接下来0谜题关卡的。这里使用unity3D引擎的UGUI制作对话框的UI界面。首先新建一个文本文档TXT,然后按顺序输入你想弹出的对话信息。脚本编写,使用Awake()函数初始化,Awake()函数与我们常用的star()函数不同,在于Awa

37、ke()函数在整个生命周期中仅执行一次,若游戏对象的初始转态为关闭转态,运行程序是Awake()并不会被执行,初始化,唯有当游戏对象的初始状态为开启状态时,Awake()函数才会被执行。符合玩家触发剧情是才会弹出剧情对话框的需求。创建一个数组textList存储字符型数据,创建一个读取文件方法GetTextFormFile(),我们每次触发对话框是,先清空数组textList.clear(),同时序号归零,使用file.text.Split(n)切割语句,使用Foreach()方法循环文件中每一句,并输出到我们列表当中。通过碰撞检测返回不同参数值,获取不同的文档文件,从而实现我们的剧情系统。图

38、4-2对话框4.4火炬谜题模块(1)根据上文分析讨论,玩家需要拾取到木棍才能继续解密火炬谜题。我们给火把以及火炬物体添加Collider碰撞器,木棍需要添加Rigidbody刚体,在木棍物体的碰撞器组件中需要勾选IsTrigger属性,如图3-1,这样才会检测物体碰撞但会忽略物理引擎无法引起碰撞效果,使用OnTriggerEnter()函数判定玩家是否进入触发器,以判定能否捡起木棍,在人物角色的右手骨骼出添加一个空物体RHandSocket作为子物体,当玩家键盘按下E键触发事件时,把木棍transform组件的position及rotation改为RHandSocket里transform组件

39、的position及rotation,同时把木棍添加为RHandSocket的子物体,当玩家拾取器木棍后,木棍位置将会在角色手上并且跟随角色移动。当玩家点燃室内第一个火炬时会出现线索提示玩家寻找点燃火炬顺序,玩家按顺序点燃火炬后,中心的火炬便会点燃圣火。这里的代码思路是,玩家点燃第一个火炬时,我们脚本设置一个Bool值puzzleActive判定,puzzleActive默认为false,当玩家键盘按下F键点燃火炬,puzzleActive为true,开始判定玩家点燃火炬顺序,若一致则播放开门动画,玩家点燃顺序错误时,清空火炬点燃顺序储存数组,重新判定。图4-3Collider属性图(2)开门

40、动画制作,首先我们勾选所需要开门的物体,添加Animator动画器,菜单栏处选择Widow-animation,新建片段命名为Dooropen,点击开始录制,把时间线拉到一秒钟的最后一帧处,接下来移动我们所勾选的物体,根据你所需要的开门方式,移动或选择角度。关闭录制点开我们刚刚录制的开门动画,在Inspector面板处,我们取消looptime的勾选,如果勾选了looptime,动画会一直循环播放。这样我们的开门动画便录制好了4.5九宫格拼图机关模块(1) 首先制作九宫格拼图的UI界面,根据前文陈述,我们将使用unity3D自带的UGUI进行UI界面开发,添加拼图图片素材,在Inspector

41、属性面板中选择TextureType-Sprite(2DandUI)、SpriteMode-Multiple,点击SpriteEditor按钮打开SpriteEditor界面选择Slice-Type-GridBYCellCount-Column&Row,行和列数值设为3,这样便把添加的图片素材分割成等分的九宫格拼图碎块。在Hierarchy面板中的选择UI-Image,并命名为BackGround,在BackGround的Inspector属性界面,删除Image组件,使用Image组件预制体,并且为BackGround添加GridLayoutGroup网格布局组件以便拼图UI整体的页面布局。

42、图4-4 SpriteEditor界面(2)接下来我们编写实现九宫格拼图模块功能的C#脚步代码,使用List数组记录正取的精灵名字顺序,遍历一遍记录下最后一张碎片,作为我们的空白拼图块。实例化事先设置好的Button预制体,随机取出碎片放置,达到打乱的效果。设置鼠标点击事件BtnOnclick(),判定条件:当点击的碎片anchoredPosition锚点位置减去空白格anchoredPosition锚点位置的值小于或等于GridLayoutGroup.cellSize.x+GridLayoutGroup.spacing.x的值时,两个碎片相邻,可以发生置换事件。每次点击后,进行一次遍历,遍历

43、所有图片名字顺序,判断是否完成拼图,若是名字顺序与我们初始化记录的正确图片名字顺序相同,判定完成拼图,播放开门动画,玩家得到下一个谜题线索。鼠标点击事件代码实现如下:privatevoidBtnOnclick(RectTransformbtnRect)if(Vector2.Distance(btnRect.anchoredPosition,this.nullImage.anchoredPosition)=(this.bgLayout.cellSize.x+this.bgLayout.spacing.x)SpritecacheSprite=btnRect.GetComponent().sprit

44、e;/交换前缓存一下图片stringcacheString=btnRect.gameObject.name;btnRect.gameObject.name=this.nullImage.gameObject.name;this.nullImage.gameObject.name=cacheString;btnRect.GetComponent().sprite=this.nullImage.GetComponent().sprite;this.nullImage.GetComponent().sprite=cacheSprite;/this.nullImage.GetComponent().s

45、prite=cacheSprite;this.nullImage=btnRect;CheckAll();4.6魔法阵谜题模块玩家得到激活魔法阵的道具线索后,便可进入魔法阵内激活魔法阵,玩家激活魔法阵后将会实例化出守护者,守护者会进行巡逻及对玩家进行攻击。这里我们要编写守护者自动寻路的AI脚本。首先我们勾选我们所需要烘焙的物体,在Inspector属性面板将物体的Static状态设置为NavigationStatic,接下来使用unity3D引擎里自带的Navigation自动寻路控件,在菜单栏中选择Window-AI-Navigation,打开Window-Navigation导航窗口选择Ba

46、ke界面,如下图3-2所示,点击Bake进行烘焙。烘焙好地面后,给我们添加的守护者模型物体添加NavMeshAgent组件以及设置为NavigationStatic导航静态物品,用来控制守护者在导航网格上进行移动。图4-5Bake界面图脚本编写,使用OnTriggerEnter()方法检测角色碰撞到的物体,当角色与进入魔法阵Collider设置的范围内发生碰撞,便激活守护者模型的static状态。在守护者AI脚本中,使用vector3.Distance()方法返回角色与守护者的距离,当两者之间的距离大于1小于等于10时,播放奔跑动画,导航开始,通过NavMeshAgent.SetDestina

47、tion()将守护者导航目的地设为角色,这样便可实现追踪效果,当两者之间的距离小于等于1时,播放攻击动画,角色死亡。当守护者与圣火发生碰撞,守护者死亡,掉落最终线索,销毁守护者。4.7本章小结本章通过详细而又具体的文字描述,提出本文所研究的解密游戏的功能模块的具体实现思路及实现方法,同时将主要制作步骤一一详细的描写出来,分享了本次游戏制作后最终成果,完成本次游戏的最终框架实现以及设计。第五章游戏测试5.1测试环境本章节用于测试的计算机硬件环境以及软件环境于下表4-1所示。硬件与软件 环境版本CPU 英特尔Corei5-6300HQ2.30GHz四核GPU NvidiaGeForceGTX950M内存 8GB操作系统 Windows10专业版Unity版本

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 期刊短文 > 信息管理

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com