工程实训说明书基于Unity的3D机器人探险游戏.pdf
《工程实训说明书基于Unity的3D机器人探险游戏.pdf》由会员分享,可在线阅读,更多相关《工程实训说明书基于Unity的3D机器人探险游戏.pdf(45页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选 doc 可编辑 word 欢迎下载 XXXX 工 程 实 训 说 明 书 题目 基于Unity的3D机器人探险游戏 系(部)计算机科学与技术 专 业(班 级)姓名 学号 指导教师 起止日期 2014.06.11-2014.07.05 精选 doc 可编辑 word 欢迎下载 摘 要 本次工程实训的实训题目是基于Unity的 3D 机器人探险游戏。Unity是一款很强大 3D游戏开发引擎。在用 Unity实现 3D 机器人游戏的过程中,在软件使用方面,需要用到 photoshop和 3Dmax 等美工或建模软件;在脚本语言编写方面,需要涉及 JS 或 C#;本说明书从最初的 3D 探险游戏
2、策划,到利用 Unity 相关技术实现场景物体绘制及渲染,再到 3D 探险游戏的测试,最后到游戏的完全实现及单机版的发布,对本次实训内容的实现和完成过程进行描述和说明。Unity 探险游戏主要包括如下内容:场景、检查点、widget 机器人、敌方角色。检查点用于 widget 机器人在游戏过程中的死亡后的复活。关键字:Unity,3D,JS,C#精选 doc 可编辑 word 欢迎下载 目 录 摘 要.I 1 引言.1 1.1 编写目的.1 1.2 项目背景.1 2 需求规约.3 2.1 任务概述.3 2.2 需求规定.3 2.3 运行环境规定.5 3 游戏实现过程.6 3.1 游戏玩法设计.
3、6 3.2 游戏内容设计.6 3.3 游戏界面设计.6 3.4 关卡设计.10 3.5 游戏基本架构和主要类设计.11 3.6 数据结构与算法设计.13 4 技术说明.15 4.1 3D 渲染.15 4.2 动画制作.15 4.3 数据存储.15 4.4 游戏特效.15 4.5 粒子系统.15 4.6 碰撞检测的实现.16 4.7 游戏 AI.16 5 测试用例设计.18 5.1 测试用例编写目的.18 5.2 测试用例.18 5.3 测试总结和改进建议.20 总结.21 参考文献.22 附录 游戏核心代码.23(1)机器人的角色控制核心代码.23(2)机器人的状态处理核心代码.26(3)AI
4、 控制核心代码.28(4)拾取物品和背囊管理核心代码.32(5)碰撞检测核心代码.35 精选 doc 可编辑 word 欢迎下载 1 引言 1.1 编写目的 本文档是进行项目策划、概要设计和详细设计的基础,也是编写测试用例和进行系统测试的主要依据。同时,该文档也是用户确定软件功能需求的主要依据。本文档的读者对象很多,例如,项目经理、设计员、程序员、测试员、销售员、用户、其他人员如公司领导等。因此,运用Unity 进行 3D 探险游戏开发的开发人员在进行开发之前,需要仔细阅读该文档,明确需求分析,并对场景构思有较好的理解。1.2 项目背景 1.2.1 Unity简介 Unity是一款跨平台的游戏
5、开发工具,从一开始就被设计成易于使用的产品。作为一个完全集成的专业级应用,Unity 还包含了价值数百万美元的功能强大的游戏引擎。Unity3D是一个让你轻松创作的多平台的游戏开发工具,是一个全面整合的专业游戏引擎。1.2.2 项目背景简介 本项目的名称为用 Unity 进行 3D 探险游戏开发。由软件工程(数字媒体)教研室提出,有数字媒体方向学生具体实现,实现过程包括:游戏策划、场景设计、3D 建模、渲染贴图、测试、用户体验等。进入 21 世纪后,游戏动漫设计已经成为全球十分热门的行业。游戏动漫产业的巨大影响力不仅凸显在我们的生活中,其发展过程中产生的经济效益也吸引了越来越多投资者的眼光,成
6、为了新一轮经济发展的增长点。而本次工程实训3D 场景渲染的开发,最终将获得一个小型的游戏或动漫3D 场景,而现在的游戏或动漫中 3D产品已经成为主流。飞速发展的游戏和动漫产业在市场上已经带来了非常可观的收益。从市场规模来看,2009 年中国网络游戏市场规模达到 258 亿元人民币,同比增长 39.5%。其中:国产网络游戏市场规模达到 157.8 亿元人民币,比 2008年增长 41.9%,占总体市场规模的 61.2%。精选 doc 可编辑 word 欢迎下载 从主要细分游戏市场来看:大型多人同时在线角色扮演游戏(MMORPG)是市场的主导力量,2009 年 MMORPG 占整体网络游戏市场的比
7、例约为 79%,市场规模达到 203.8亿元,较 2008 年增长 35.2%;高级休闲游戏(ACG)的增长速度在加快,2009 年高级休闲游戏占总体网络游戏市场规模的比例 约为 13.8%,市场规模达到 35.5 亿元,较 2008 年增长 49.7%。因此,作为数字媒体专业的学生,在毕业前接触相关的游戏或动漫开发的案例,有利于熟悉游戏或动漫的开发流程,能为以后从事游戏或动漫方向的就业打下良好的基础。精选 doc 可编辑 word 欢迎下载 2 需求规约 需求规约包括任务概述、需求规定、运行环境规定三个部分。任务概述将对Unity 的 3D 探险游戏需要完成的任务做简要说明;需求规定将从业务
8、需求方面对 3D 探险游戏的实现进行需求分析;运行环境规定,即实现 3D 探险游戏场景渲染需要的硬件和软件支持。2.1 任务概述 Unity3D 是由 Unity Technologies 开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。Unity类似于 Director,Blender game engine,Virtools 或 Torque Game Builder 等利用交互的图型化开发环境为首要方式的软件其编辑器运行在 Windows 和 Mac OS X 下,可发布游戏至 Windows、M
9、ac、Wii、iPhone和 Android 平台。也可以利用 Unity web player 插件发布网页游戏手机游戏支持 Mac 和 Windows 的网页浏览。本次实训的题目为基于 Unity3D的机器人探险游戏技术实现,旨在成功的设计出一款可以运行在智能手机和平板电脑上的探险游戏。该项目主要界面和功能包括:(1)界面设计的美观有一种三维仿真的效果。(2)系统中的模型进行移动和碰撞检测。(3)场景中的树实现风吹动的效果。(4)机器人对小兔子的攻击 (5)拾取功能、背囊管理。2.2 需求规定 2.2.1 对功能的规定 本项目主要功能有:开始游戏,帮助,退出游戏,机器人的移动控制,精选 d
10、oc 可编辑 word 欢迎下载 背囊管理,小兔子的 AI 控制。精选 doc 可编辑 word 欢迎下载 开始游戏,loading 后用户进入游戏。表 1 游戏功能表 编号 功能名称 使用角色 功能描述 输入 系统响应 输出 1 开始游戏 玩家 点击按钮用户进入游戏选择模式 按钮输入 弹出游戏模式按钮 2 帮助 玩家 点击按钮用户进入游戏帮助 按钮输入 进入游戏帮助 3 退出游戏 玩家 点击按钮用户退出游戏,游戏结束 按钮输入 退出游戏,游戏结束 4 机器人的移动控制 玩家 Wasd键控制机器人的移动 键盘输入 根据玩家的输入机器人移动 5 背囊管理 NPC 保存玩家找到的奖品 无 奖品保存
11、到背囊中 6 小兔子的AI控制 NPC 控制小兔子的状态 无 小兔子的运动状态 2.2.2 对界面的规定 本项目涉及界面包括开发菜单界面,游戏界面。菜单界面用于显示游戏的菜单,包括开始游戏,退出游戏。游戏界面用于3D显示游戏的各个场景,物体,地形等元素。2.2.3 故障处理要求 软件可能出现的故障:表 2 游戏故障预测表 故障类型 故障处理 机器人无法正常操作 重新运行 精选 doc 可编辑 word 欢迎下载 2.3 运行环境规定 2.3.1 硬件要求 操作系统(Windows)XP、Vista32 位、Win7。CPU 主频 P4 1.4GHz及以上。内存 256MB以上。显存支持独立、集
12、成显卡,要求显存 32MB 以上。硬盘大小2.2GB 以上。屏幕分辨率 800*600及以上。2.3.2 软件要求 Unity4.0 或 4.0 以上版本,photoshop 和 3Dmax 等设计或建模软件,绘制类图软件 StarUML,microsoft Word2003 等等。精选 doc 可编辑 word 欢迎下载 3 游戏实现过程 3.1 游戏玩法设计 玩家进入游戏场景,玩家通过点击进入游戏,进入游戏界面后。我们会看到一个机器人。使用 wasd 键来控制机器人的行动方向。在界面的上方我们可以看到机器人的生命值。下面有可以使用的道具。明白以后你就可以开始我的探险游戏。在行走的过程中机器
13、人会和山体树木发生碰撞,机器人的运动状态也会发生改变。该探险类游戏为单人游戏。该探险游戏的操作方式比较单一,主要是控制游戏角色的行走方向以及向敌人进行攻击。方向键盘包括上下左右,分别用于控制机器人的前进和后退,左右转角操作。而 ctrl 键用于攻击敌人。3.2 游戏内容设计 3.2.1 关于剧情 进入游戏后,玩家进入一个森林的游戏场景,玩家可以在道路上移动,在行走的过程中你可能会遇到一些物品,可以拾取到自己的背囊。还会遇到一个会攻击机器人的小兔子。在玩家战胜敌人后会有奖励。3.2.2 关于角色 该游戏主要包括:玩家和兔子。玩家控制机器人向上下左右四个方向移动,并对兔子进行攻击。兔子在遇到机器人
14、的时候也会对玩家进行攻击。3.2.3 关于场景 在 unity 中使用地形和模型的组合来雕琢游戏世界的空间,首先定制地形,在 unity 中可以使用高度图来创建高度,使用笔刷来绘制高度,绘制贴图等,并添加光照、阴影和天空盒和基于距离的无话效果,还有在地形上加入了水体。精选 doc 可编辑 word 欢迎下载 3.3 游戏界面设计 3.3.1游戏界面的框架设计 游戏框架设计必须符合游戏的玩法和所使用的工具,不同于大型的 MMO Game,该游戏没有复杂的游戏系统,更加侧重游戏可玩性的设计,并且由于使用 Unity3D引擎,省去很多底层模版的设计,其中核心的木板为:图形渲染,物理仿真,网络联机。游
15、戏系统的框架结构图如下:图 1 游戏系统的框架结构图 3.3.2 界面设计 本游戏作为 3D 游戏,3D游戏界面中主要实现游戏中场景和各个部件的绘制和控制,包括地面,天空,山体、树木等。各种游戏模型及界面如下所示:图 2 机器人角色模型 精选 doc 可编辑 word 欢迎下载 图 3 敌人角色模型 图 4 树角色模型 图 5 设置触发器精选 doc 可编辑 word 欢迎下载 图 6 设置着色器 图 7 游戏菜单界面 精选 doc 可编辑 word 欢迎下载 图 8 积分榜界面 图 9 游戏主界面 3.4 关卡设计 3.4.1 关卡及关卡中游戏元素 该机器人探险游戏设有一个关卡,关卡由地形,
16、天空盒,光照和阴影,山体,道路,天空,水体等元素构成。地形:Unity3D 中的地形模块不但可以导入高度图,还可以用笔刷为绘制精选 doc 可编辑 word 欢迎下载 地形纹理,树木,草,大大减少了开发人员的工作量。精选 doc 可编辑 word 欢迎下载 天空盒:在 Unity中,天空盒是一个特殊的虚拟盒子,它包裹在场景周围;,在渲染设置中卫整个场景一次性指定一个天空盒。光照和阴影:场景以光源的位置为视点被渲染,每个渲染图像的像素的深度值被记录在一个“深度纹理”中,被称为阴影贴图。3.4.2 操作设计 关卡的操作是通过键盘实现坦克的运动和攻击。3.4.3 运行时间 每关运行时间是由开始游戏为
17、起点玩家的失败或者胜利最为结束点。3.4.4 关卡设计流程 图 10 游戏关卡流程 3.5 游戏基本架构和主要类设计 3.5.1 游戏的基本架构(1)游戏的类框架确定关卡的元素 关卡的元素的位置安排设计 关卡元素的绘制 关卡环境的美化 精选 doc 可编辑 word 欢迎下载 图 11 游戏的类框架图(2)游戏界面的基本跳转 图 12 游戏界面跳转图 3.5.2 主要类的设计 游戏中开发的类比较多,为了让读者能够更好的理解各个类的在游戏中所扮精选 doc 可编辑 word 欢迎下载 演的角色,本节将按照前面的框架分类对各个类的功能进行简要介绍。精选 doc 可编辑 word 欢迎下载(1)公共
18、类 MonoBehaviour类:每当想要在 Unity中创建一个新的 JavaScript脚本时,会自动从该类继承,是的脚本可以访问所有该类的内置函数以及继承而来的成员,它控制了和碰撞检测、鼠标事件、摄像机事件、组件获取以及比较相关的绝大部分函数。Animation类:该类负责对动画剪辑进行播放、组合、和混合的所有功能。(2)游戏相关脚本代码 Widget_Cntroller.js:用于处理部件的运动和玩家的输入 Widget_Status.js:用于处理 widget 的状态。Widget_Camera.js:用于控制摄像头和使它顺利地跟随部件。Widget_Inventory.js:这里
19、包括所有部件的收集的项目更新。Widget_AttackController.js:处理玩家的攻击输入和对目标敌人的伤害。Widget_Animation.js:Widget 的动画状态管理器。WaypointBehavior.js:处理脚本在所有的 waypoint StoreFront.js:在 waypoint 处理采购变化 PickupItems.js:处理所有 widget 可以拿起的部件 GUI_WaypointStore.js:用于交易存储接口处理 GUI_MainMenu.js:为场景增加背景和主要的导航按钮 GUI_HUD.js:显示 pertinant 信息窗口,他的项目,
20、和任何现有的敌人。GUI_CustomControls.js:为在别处使用 gui_customcontrols 包含自定义复合控件类。Enemy_RespawnPoint.js:附加到场景中去作为敌人的重生点。当玩家走到指定的区域,一个新的敌人将重生。EBunny_Status.js:小兔子敌人的信息状态控制。EBunny_AIController.js:用于处理电子兔子的 AI和动画。DamageTrigger.js:一个简单的,可应用于任何类型的对象变量的损伤触发。用于检查损伤量的变化。Checkpoint.js:静态声明变量。3.6 数据结构与算法设计 3.6.1 数据结构精选 doc
21、 可编辑 word 欢迎下载 链表,哈希表是常用的数据结构,在该游戏中未用到相关的数据结构。3.6.2 算法设计(1)算法一:判断玩家是否在攻击范围内 首先设置小兔子的攻击半径,当小兔子查看到自己离玩家的目标距离细雨它的攻击半径时,小兔子就开始攻击。distanceToPlayer=transform.position-target.position;If(distanceToPlayer.magnitude 0)/right turn rotateDirection=new Vector3(0,1,0);else if(moveHorz 0)moveDirection*=fastRollSp
22、eed;精选 doc 可编辑 word 欢迎下载 widgetStatus.energy-=widgetStatus.widgetBoostUsage*Time.deltaTime;isBoosting=true;/Duck the controller if(Input.GetButton(Duck)controller.height=duckHeight;controller.center.y=controller.height/2+.25;moveDirection*=duckSpeed;isDucking=true;if(Input.GetButtonUp(Duck)controlle
23、r.height=normalHeight;/reset for after ducks controller.center.y=controller.height/2;/recenter for after ducks isDucking=false;if(Input.GetButtonUp(Boost)isBoosting=false;/Apply gravity to end Jump,enable falling,and make sure hes touching the ground moveDirection.y-=gravity*Time.deltaTime;/Move and
24、 rotate the controller var flags=controller.Move(moveDirection*Time.deltaTime);controller.transform.Rotate(rotateDirection*Time.deltaTime,rotateSpeed);grounded=(flags&CollisionFlags.CollidedBelow)!=0);function IsMoving()return moveDirection.magnitude 0.5;精选 doc 可编辑 word 欢迎下载 function IsDucking()retu
25、rn isDucking;function IsBoosting()return isBoosting;function IsGrounded()return grounded;精选 doc 可编辑 word 欢迎下载 (2)机器人的状态处理核心代码 function ApplyDamage(damage:float)health-=damage;/play hit sound if it exists if(hitSound)audio.clip=hitSound;audio.Play();/check health and call Die if need to if(health=max
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 工程 说明书 基于 Unity 机器人 探险 游戏
限制150内