ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:305.37KB ,
资源ID:7951135      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7951135.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于Unity3D的3D跑酷类游戏的设计与实现.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于Unity3D的3D跑酷类游戏的设计与实现.docx

1、基于Unity3D的3D跑酷类游戏的设计与实现摘 要本作品是基于unity3D的一款3D跑酷类游戏,以已有的跑酷类游戏为模版,结合我所学到的知识综合而成,应用名为Running Mr.Z。酷跑类游戏以其简易的操作方式和华丽的游戏场景,常年占据手机APP和电脑软件下载量的领先地位。经过分析,我发现酷跑类游戏逻辑结构分明,相对于其他游戏实现起来也容易不少,于是结合自身所学,使用Unity3D和3DMAX等开发引擎,进行游戏的设计。关键词:3D;酷跑类游戏;Unity3D;3DMaxAbstractThis work is based on the unity3D of a 3D Parkour g

2、ame, the market has been Parkour game as a template, combined with the knowledge I have learned from the application called Running Mr.Z. Cool running game with its simple mode of operation and gorgeous game scene, perennial occupy the leading position in the mobile phone APP and computer software d

3、ownloads. After analysis, I found the cool running game logic structure clear, compared to other games it is also much easier, and combined with their own learning, using Unity3D and 3DMAX development engine, game design.Key words: 3D; Cool running game; Unity3D; 3Dmax1、引言1.1、开发背景时代总是变迁的很快,许多的电子产品也在

4、随着时代飞速的发展着,绽放蓬勃的生命力。出现的第一代计算机刷新了当时人们的视野,而后计算机在不断的更新换代,逐渐的占据了人们的世界,紧随着便是手机的出现,从最早的大哥大到现在的触屏智能手机。随着网络的兴起、手机硬件性能的提升,手机网络游戏也越来越多,用户利用网络可以进行联机游戏,同自己的好友共同游戏享受乐趣1。随着数字化信息技术和网络技术的发展,传统的电子游戏也受到了颠覆性的影响 2。对于游戏开发者来说,这是最好的时代 3。虽然这是十分适合游戏开发的时代,但依然存在着许多限制的条件,比如游戏开发的时间过久从而导致上市时间已与人们对游戏需求的时间脱节,这不仅将导致游戏本身价值的贬值,也将给开发团

5、队带来巨大的损失。所以能够快速的开发出一款既吻合大众口味的又能给公司带来收益的游戏是当前最急需解决的问题。这个问题并不需要大家担心太久,因为程序员们又创造了奇迹,一款款的游戏引擎像小鱼儿吐泡泡一般冒了出来。根本的问题得到了良好的解决,开发者们真正可以大展身手的机会已经摆在面前了。1.2、游戏介绍Running Mr.Z是一款跑酷类的游戏,在现下这个充斥着各式各样或奇怪的或正常的甚至与认知相悖的游戏的世界里,跑酷类的游戏受到了玩家们的支持。跑酷类游戏是根据现实中的一种跑酷运动进行改变整合而后开发出来的,这是为了满足那些无法亲自体会跑酷运动带来的刺激感的玩家们的需求。跑酷运动具有一定的危险性,并不

6、适合绝大多数的人们,但跑酷游戏的出现就解决了这一尴尬的境地。在跑酷类的游戏当中,3D类型的场景是最受各界玩家热衷的追捧的。3D的形式本身能让人们产生身临其境的感觉,加上是刺激的跑酷游戏,这无形中又为3D跑酷游戏加分了不少。跑酷类游戏的操作十分简单,只需使用左右键让角色左右移动,用上键控制跳跃,用下键控制下蹲,角色会根据键盘输入做出相应的动作,以躲避障碍,触碰跳板,捡取金币或者道具。当玩家碰到障碍时,游戏就失败,若玩家不能够支付钻石以继续游戏,则开始计算得分。游戏过程中吃到的钻石可在游戏的道具菜单中购买加成的装备或者道具。当然除了这些基本的功能之外,还有设定一些小细节,比如角色的跳跃次数被限定为

7、一次最多连续跳起两次,因为如果角色可以无限次的跳跃的话,这个游戏将失去玩乐的意义。在现实的跑酷运动中,人们本身便很难做到梁旭跳跃两次,在游戏中设置连续跳跃两次已经是极大的让步。游戏流程设计如图 1-1所示3:图 1-1 游戏流程设计1.3、开发流程介绍在游戏开发中会根据使用的引擎进行流程的分析,而在Running Mr.Z中使用的引擎是Unity3D。简单实用、免费、开源4。基于Unity的手机游戏开发,手机游戏主要包含主屏幕滑屏,界面刷新,技能成长系统,虚拟杆控制,场景技能释放,怪物AI设计等多大功能模块设计,实现并开发游戏5。开发流程图如图 1-2所示:图 1-2 开发流程图1.4、课程研

8、究意义在开发的过程中,我学到了不少关于开发的技巧和开发的经验,也结识到了许多很有实力的学长学姐,在将来的职场中和生活中必定受益匪浅。作为一个近乎零基础的开发学员,每一个游戏项目的经验都是十分值得珍惜的,做成一个成品的项目,胜过读一年的书。实践的项目经验,所得到的经验技巧和人缘,是书本万万学不到的。经过对这一课程的学习,我对编程方面和项目代码整合以及项目的各方面整合加深了不少的印象和经验,在今后的职场生活中是一定能够用得到的。2、关键技术概述2.1、Unity3d游戏引擎及NGUI插件介绍2.1.1、Unity3d游戏引擎简介Unity3 D是由Unity Technologies开发的一款3D

9、跨平台次世代游戏引擎,Unity3D使得开发人员可专注于游戏的设计而忽略底层的技术实现,从而达到快速开发的目的6。Unity3D是一款支持跨平台发布的游戏引擎,支持的平台包括Web , MAC ,PC、IOS、Android、PhyStation3、xbox360、Windows Store、Windows Phone、Blackberryl0、PlayStation4等几乎所有主流游戏平台7。并且这一款游戏引擎之所以那么受欢迎,还有一方面的原因是它自身的开发速度是同种游戏引擎中最快的,能力是是非的强大,适用于C#,JavaScript,Boo等主流的脚本语言,兼容三维画面美化所需要的美术资源

10、文件格式,其内嵌了动画、粒了、寻路等了系统使其可以进行各种图形渲染8。2.1.2、NGUI界面开发插件介绍使用Unity3D开发游戏的人员都知道,在这款引擎当中有一款用于界面开发的插件的需求是十分的火热,而这款NGUI界面开发插件是Unity3D资源商城目前最火的界面开发插件,严格遵循KISS原则,使用C#语言开发,代码大多数不超过200行,达到的效果尽如人意,而且在最大程度上配合程序员,可供他们扩展和修改6。在具体实现时,需要先使用图形处理工具来制作需要的图片,再利用NGUI中的Atlas Maker制作图集,然后在UI中生成Sprite精灵,调整其大小和位置并进行九宫格切割9。2.2、Un

11、ity3d游戏引擎的特点Unity3D是一款分层级的全面的游戏开发引擎,它的场景编辑功能可视化,可以通过直观的场景显示来正确、高效的完成场景编辑;每一个控件、对象都可以通过属性编辑面板来进行定制化;并可以实时预览所创建的场景10。其特点主要有:图形动力:带有设计制作游戏过程中所需要的一些用于渲染的组件和处理色彩的脚本等6。可视化开发环境:在程序员编写脚本的时候可以通过可见的环境去看看自己所设计的成果的呈现状态,并可以进行实时的修改,是很方便的一个功能6。导入便捷:在这款引擎当中开发者可以直接将美术制作出得物体模型或动画等采取直接导入的方式,并且不用担心美术部分的贴图材质等会因此而产生改变等情况

12、6。物理上的仿真形式:这款引擎上整合了物理方面需要用到的引擎系统,并附带有一些经常会用到的物理方面的组件,像碰撞器之类的6。可以跨多种平台发布游戏:Unity3D中几乎涵盖了所有的可以发布游戏的主流的平台6。资源可共享:开发者可以上网上商城对一些自己需要的游戏源码、模型或资源进行购买,实现游戏资源的复用。性能分析器:为了方便程序员进行性能分析,在引擎中还带有一款分析器能够在编辑器中或可以通过直接连线设备进行分析,十分的便捷6。3、需求分析3.1、概要描述3.1.1、游戏类型Running Mr.Z是一款单机的3D跑酷类游戏,是以第三人称的视角进行游戏的向前奔跑。游戏中的场景是一个树林,玩家控制

13、游戏人物通过奔跑跳跃和下蹲来躲避路途中的树枝、吊桥等障碍物,以及捡取钻石和磁铁、护盾、飞行器等道具。玩游戏时不需要联网,直接用电脑开启游戏即可运行。3.1.2、游戏运行的要求及针对的市场Running Mr.Z是一款单机游戏,故而对网络没有要求,因其是一款小型游戏,故对电脑的配置无明显要求。该游戏主要针对的市场为儿童、青年以及老年的各年龄段拥有设备的可玩游戏的人群,而我的游戏希望能够面向各年龄段的人们,所以需要考虑到各个年龄段不同玩家的共同需求。3.2、游戏的功能需求3.2.1、游戏元素本款游戏中的游戏元素包含奔跑的主角Mr.Z,障碍物,钻石以及计分系统。该游戏为3D跑酷类游戏,玩家通过第三人

14、称是视角控制奔跑中的游戏角色进行障碍物的躲避,并对奔跑路途中的金币进行吸食,从而在关卡末进行得分统计。3.2.2、游戏功能在人类世界中可以进行的运动可以使多种多样的,而在游戏世界中的动作主要分为两种:循环动作和非循环动作,循环动作指的是角色的走跑一类的基本动作;非循环动作指的是动作在做出反馈时只需要一次播放的动作11。在游戏当中,角色在一开始就被赋予一直向前奔跑的能力,而玩家只要对角色进行跳跃、向左向右以及蹲下的操作就可以了,并通过这些操作来躲避障碍完成游戏。我们使用编辑脚本实现人物的移动的控制12。游戏中除了奔跑和跳跃的基本功能外,还有钻石的吸食和消失,得分的计算,每一段跑道之间的衔接,游戏

15、的暂停与继续等。场景中的所有虚拟物体都由Unity3 D的场景编辑管理13。这是一款跑酷类游戏,玩家控制角色的动作,所以在功能需求这方面我们需要满足角色能进行的基本操作。在游戏开始时自动设置为角色自主的向前奔跑,需要进行跳跃操作和左右躲避以及下蹲操作来躲避路上碰到的障碍物。为了游戏的可玩性,增加一定的难度,在跳跃次数上需要进行限制,单次跳跃未落地前不可再次跳起。游戏中可以看到玩家控制的主角在不停地移动,而游戏背景总是在向下移动,让玩家感觉整个画面都在移动,呈现一种动态的视觉效果14。每一款游戏都是需要一个界面对玩家进行引导,而界面的精美程度是对玩家最直接的吸引,而界面功能更加的简洁明了更能方便

16、广大玩家,所以游戏对界面也是要求多多。在游戏中设置一个关卡,整个地图呈S型前进。关卡中的每一段进行道路、障碍物以及钻石上位置的调整,每一个道具都设置碰撞器或者触发器,利于游戏过程的真实性。而这些触发器之类的能够跳动后台做出相应的指令,比如游戏的结束,游戏的暂停,游戏的金币捡取量,游戏的得分等等。实践中,需要为道具添加刚体组件,使其在物理引擎的作用下模拟运动,通过AddForce( )和AddTorque( )分别添加抛力与转动力,即可使刚体得到符合现实的运动15。游戏中设置很多处碰撞器和触发器,如:钻石和道具上挂载了触发器,玩家控制游戏角色进入了钻石和道具的触发器时,钻石的数量会+1,若是道具

17、则会触发道具的效果。并且触发销毁的效果,即钻石和道具等在玩家触碰到的时候会自动销毁。障碍物上有碰撞器,在游戏角色触碰到碰撞器时,激活碰撞器上挂载的代码,使游戏暂停并弹出窗口询问玩家是否使用钻石复活,若是则扣除一定量钻石并继续游戏,若否则游戏结束计算分数。在关卡末端有一个挂载在空物体上的触发器,玩家是看不见实体的,当玩家控制游戏角色穿过该触发器时,游戏结束,也就是游戏通关,计算分数。在游戏过程中吃到的钻石会进行累加,并且会一直记录,吃到的钻石可以在商店中购买游戏角色、加成道具等。 就游戏而言,执行速度是重要指标,因为十分精确的碰撞检测很耗时16。4、游戏实现4.1、游戏菜单的实现4.1.1、3D

18、菜单实现3D菜单是通过GUI插件技术,将想要显示的菜单功能挂载在一个面板上,赋予分别它们功能,再使用摄像机对准菜单面板,当条件激活到菜单时,激活摄像机,讲菜单上的小部件投射到玩家眼前,以供玩家选择,如继续游戏和结束游戏退出游戏等。还有一种3D菜单是一直显示在玩家眼前的,那就是分数计算菜单和钻石数量计算菜单,它们实时计算分数和捡取到的钻石的数量,以最直接最直观的方式展示给玩家。3D菜单主要是用于控制游戏中的开始、暂停、继续,以及显示游戏中所得到的分数和玩家吃到的金币总和。3D菜单用例表如表 4-1:表 4-1 3D菜单用例表4.1.2、2D菜单实现对于2D菜单的实现,我使用的是UGUI组件,主要

19、是设计菜单界面,按钮以及音量调节的滑动条,经过一定的布局展示给玩家,2D菜单详细层次结构图如图 4-2:图 4-2 2D菜单详细层次结构图2D菜单各个场景中的出现的类与方法的结构图如下图:图 4-3 Cover Button click类与方法的结构图图 4-4 Main Menu Button Click类与方法的结构图图 4-5 Introduction Button Click类与方法的结构图图 4-6 Score Button Click类与方法的结构图图 4-7 Setting Button Click类与方法的结构图图 4-8 Shop1 Button Click类与方法的结构图2

20、D菜单用例表如表 4-9:表 4-9 2D菜单用例表菜单名称菜单描述菜单用例Shuomingcaidan说明菜单1-1 玩家进入说明菜单,查看游戏说明Xitongcaidan系统菜单2-1 玩家进入系统菜单,调节音乐音量2-2 玩家进入菜单,点击意见反馈按钮可链接一个地址进行意见反馈Youxicaidan入口菜单3-1 玩家进入游戏菜单,点击游戏开始按钮3-2 玩家进入游戏菜单,点击查看说明菜单3-3 玩家进入游戏菜单,点击查看商店菜单3-4 玩家进入入口菜单,点击查看最高得分3-5 玩家进入入口菜单,点击查看系统菜单Shangdiancaidan商店菜单4-1 玩家进入商店菜单,点击角色购买

21、按钮,查看可购买的人物角色4-2 玩家进入商店菜单,点击道具按钮,查看道具种类以及进行道具属性加强操作4.2、游戏逻辑实现游戏中的不同脚本有时候控制不同的游戏对象,有时候控制相同的游戏对象,所以我们把一个脚本就当成一个类来看待。此游戏中总共有qwer类、stop类、turn类、daojuxuanzhuan类、tanhui类、道具类、xiaohui类和摄像机控制类这8大类;而道具类中又分为citie类、hudun类、feixingqi类等。脚本的执行顺序,也就是Unity的生命周期,如图 4-10所示:图 4-10 unity的生命周期图5、详细设计5.1、qwer类(主要类)qwer类的类图如

22、图5-1所示:图 5-1 qwer类类图该类主要负责游戏角色的一系列动作,摄像机运动的控制以及计分系统。Jumptime:double类型。控制一段跳跃与下一段跳跃之间的时间间隔,避免发生连跳事件或者游戏角色未落地就再次跳起事件。HasEnject:bool类型。识别起跳后经过的时间是否已经大于jumptime设定的时间,如果大于,即可再次跳起,如果小于,则说明时间间隔还未到,无论按几次上键都无法跳起。LastTime:datetime类型。用于识别到当前时间和起跳时间之间的差距,以确认该段时间是否已经大于jumptime中设定的时间。Speed:float类型。当游戏开始时游戏角色运动的初始

23、速度。Jiasu:float类型。游戏角色向前运动的全程是一个匀加速的运动,此元素控制其加速度大小。Timespend:float类型。用于识别从开始到结束游戏角色总共运行的时间,以用来统计最后的分数。S:float类型。分数计算。由速度和花费时间的乘积以及拾取到宝石的个数所决定。Qiu:GameObject类型。游戏角色,初期用球代替,故起名为球。Ditu:GameObject类型。游戏地图。Cam:GameObject类型。主摄像机,跟随人物向前运动。Cam2:GameObject类型。第二摄像机,在游戏开始前绕着龙旋转一周后停止使用。Dragon:GameObject类型。龙,用于游戏效

24、果。OnGUI:GUI界面。显示在游戏的右上角,让玩家能够清晰的了解到自己所得的分数。主要负责控制游戏角色的动作a)人物自动向前做匀加速运动。游戏运行时游戏开始;人物.transform.Translate (向前,速度);速度 +=time.timescale; /速度随着时间增加b)人物的左、右、跳、蹲。当按上下左右方向键时识别玩家按下什么方向键;人物.transform.Translate(跳/蹲/左/右,速度); c) 跳起时可按蹲下快速落地。跳起时按住下键人物. transform.Translate(向下,两倍速度);5.2、stop类stop类的类图如图5-2所示:图 5-2 s

25、top类类图用于控制当游戏角色碰撞到障碍物时暂停游戏,以及当游戏暂停时按空格按键继续游戏。该类中的主要元素OnTriggerEnter:是对游戏角色是否进入障碍物触发器的识别。主要负责游戏的开始和暂停点击运行按钮游戏自动开始。a)碰到障碍物时暂停游戏。碰到物体时识别该物体是否为障碍物;如果是,Time.timeScale = 0; b)暂停游戏时按空格键继续游戏。暂停时当按下空格时识别游戏角色是否在运动中;如果否,Time.timeScale = 1;如果是,则对游戏运行无影响;c)障碍物有触发器,当碰到障碍物时人物和摄像机停止运动。当人物进入触发器 Time.timescale = 0;/暂

26、停游戏5.3、turn类该类主要控制游戏角色运行到一条直线道路的尽头时,既角色进入触发器时,使角色和摄像机同时绕着角色向相同方向旋转90度。Turn类类图如图 5-3所示图 5-3 turn类类图该类中的主要元素OnTriggerEnter:是对游戏角色是否进入弯道触发器的识别。Leftturn类和rightturn类:继承于turn类,完成左转或者右转的动作。因为道路分为左转和右转的区别,故编写两个类来区别。Leftturn类和rightturn类类图如图 5-4所示图5-4 Leftturn类和rightturn类主要负责让游戏角色转弯a)在一条直线道路的尽头有一个触发器,触发时将人物和摄

27、像机转弯。当人物进入触发器人物和摄像机分别绕着人物向左/向右旋转90度;5.4、tanhui类tanhui类的类图如图5-6所示:图5-5 tanhui类类图该类主要用于当游戏角色运动到跑道外时,自动将角色弹回到赛道内,以防止角色在跑道外继续运动从而引发错误。该类中的主要元素OnTriggerEnter:是对游戏角色是否进入跑道外的触发器的识别。图 5-6Xiangzuotan类和xiangyoutan类类图Xiangzuotan类和xiangyoutan类:继承于tanhui类,完成向左弹回或者向右弹回的动作。因为道路有左右两边可以超出,向左超出赛道和向右超出赛道的弹回方向不同,故编写两个类

28、来区别。 Xiangzuotan类和xiangyoutan类如图 5-7所示主要负责保持游戏角色始终在跑道内a)在一条直线道路的尽头有一个触发器,触发时将人物和摄像机转弯。当人物进入触发器 人物和摄像机分别绕着人物向左/向右旋转90度;5.5、baoshi类(1)baoshi类baoshi类类图如图 5-7所示图5-7 baoshi类类图该类是跑道上的宝石所挂载的类,用于识别当宝石被游戏角色碰撞时,自动在宝石总数上加一。该类的主要元素:J:int类型。宝石总数。当识别到角色与宝石发生碰撞(其实是触发)时,在宝石总数上加上一。Bao:GameObject类型。用于和场景中的宝石相关联。OnTri

29、ggerEnter:是对游戏角色是否与宝石的触发器发生触发的识别。OnGUI:GUI界面。显示在游戏的右上角,让玩家能够清晰的知道自己所得到的宝石和宝石总数。主要负责宝石捡取和统计a)在游戏运行中,道路上会出现钻石,收集到的钻石可购买道具或者复活角色。钻石在碰到角色时自动销毁。当人物碰到钻石的触发器时 钻石总数+1; 销毁自己;(2)citie类citie类类图如图 5-8所示图5-8 citie类类图该类主要挂载在磁铁道具上,用于识别当角色碰撞到磁铁道具时,附近的宝石将会以一定速度向游戏角色靠近兵被拾取,持续一段时间或一段距离。该类中的元素:Dis:float类型。识别角色和宝石之间的距离,

30、当距离小于20单位长度时,宝石将自动向游戏角色靠拢。Wuti:GameObject类型。此物体即游戏角色。用于当游戏角色吃到磁铁时,把宝石的位置减去角色当前位置,得到一个向量,而宝石将沿着这个向量向游戏人物靠拢,以防止宝石跑偏。主要负责磁铁道具捡取和使用a)吃到磁铁时,前方一段距离的钻石会朝你的方向飞来。磁铁在碰到角色时自动销毁。用Vector3.Distance 识别人物与钻石之间的距离当距离20时 钻石顺着钻石-人物的position的方向向人物飞来; 当人物碰到磁铁时 磁铁销毁自己(3)hudun类hudun类类图如图 5-10所示图5-10 hudun类类图该类主要挂载在护盾道具上,用

31、于识别当角色碰撞到护盾道具时,后方一段距离内所有障碍物的触发器失效,即角色碰撞到障碍物时可以穿过而不是被暂停住。主要负责护盾道具的捡取和使用a)吃到护盾时,将持续一段时间的无敌,及碰到障碍物时可直接穿过。护盾在碰到角色时自动销毁。当人物吃到护盾时后面一段距离内的障碍物的刚体失去作用;护盾销毁自己;feixingqi类feixingqi类类图如图5-11所示图5-11 feixingqi类类图该类主要挂载在飞行器道具上,用于识别当角色碰撞到飞行器道具时,角色向上空移动一段距离,加速移动,并且拥有citie类的功能。该类的元素:Dis:与citie类相同。Wuti:与citie类相同。Jiasu:float类型。设定一个加速度,当游戏角色吃到飞行器道具时,向上空移动一段距离后加速移动的加速度。主要负责飞行器道

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

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