收藏 分享(赏)

MMORPG游戏论文 - 标红4.5K .doc

上传人:初中学霸 文档编号:9678204 上传时间:2022-12-04 格式:DOC 页数:51 大小:5.38MB
下载 相关 举报
MMORPG游戏论文 - 标红4.5K .doc_第1页
第1页 / 共51页
MMORPG游戏论文 - 标红4.5K .doc_第2页
第2页 / 共51页
MMORPG游戏论文 - 标红4.5K .doc_第3页
第3页 / 共51页
MMORPG游戏论文 - 标红4.5K .doc_第4页
第4页 / 共51页
MMORPG游戏论文 - 标红4.5K .doc_第5页
第5页 / 共51页
亲,该文档总共51页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、本科毕业论文 姓 名: 王金伟年 级: 2014级 专 业: 信息与计算科学 论文题目:基于Android平台的MMORPG类游戏开发-醉仙 指导教师: 廊坊师范学院本科生毕业论文(设计)论文题目:基于Android平台的MMORPG类游戏开发-醉仙论文摘要:Android是一种基于Linux的自由及开放源代码的操作系统,Unity3D是最近几年非常热门的一种跨平台并且能力很强的开发引擎,被广大游戏开发者所喜爱。在目前的AndroiUnity几乎成为Android标准工具。本文将按照游戏的开发思路,从相关知识介绍、游戏设计、游戏实现到软件测试一步步展开工作。本文设计的是一款MMORPG类型的游

2、戏醉仙,按界面划分,总共分为游戏登录界面,新手村界面,和战斗场景界面。按系统划分可分为UI系统,任务系统,背包系统,一直游戏系统。游戏以任务驱动式的方式进行,每天任务一定,与传统游戏相比,可以防止玩家沉迷。采用当前最流行的Unity引擎进行开发,画面更有真实感,体验感也是更强。关键词:Android;Unity;MMORPG游戏Title:Development of MMORPG games based on Android platform - drunken immortal.Abstract:Android is a Linux-based free and open source o

3、perating system, Unity3D is very popular in recent years, a cross-platform capability development engine, being loved by the game developers. In the current Android mobile application development circles, Unity has almost become standard Android tools.This article will follow the development idea of

4、 the game, from relevant knowledge introduction, game design, game realization to software test step by step, complete the final work of graduation thesis.In this paper, a game of MMORPG type is designed. The author is named drunken fairy, which is divided by the interface, which is divided into the

5、 game login interface, the new village interface, and the combat scene interface.The system can be divided into the UI system, the task system, the backpacking system, and the game system.The game is carried out in a task-driven manner, and the tasks are certain to prevent players from becoming addi

6、cted to the game.With the current most popular Unity engine to develop, the picture is more realistic, the experience is also stronger.Key words:Application Development;Android;Unity;MMORPG Defense目 录1. 绪论1 选题的目的和意义1 国内外的发展状况11.3 论文组织结构22. 3D游戏的技术知识32.1 3D图形库32.2 Unity3D33. 游戏设计63.1 游戏创意63.2 游戏框架结构设

7、计63.3 游戏层次结构设计64. 游戏实现84.1 场景渲染实现84.2 地形84.3 光照和场景元素104.4 导入模型114.5 摄像机124.6 游戏UI界面124.7 新手村界面154.8 战斗场景234.9 生命条255. 游戏测试285.1 在Unity3D中运行测试285.2 Android平台测试295.3 测试结果33总 结34参考文献35附录36附录1:36附录2:40附录3:451. 绪论 选题的目的和意义这几年,中国经济以8%左右的速度持续平稳的增长,而在刚刚过去的2017年中国游戏市场实际销售收入2036.1亿元,同比增长率为23%。,首次突破600亿规模。游戏产业

8、己经成为经济市场中增长速度最快的热点,是众所关注的焦点。游戏是文化创意产业里的一部分,创意经济是知识经济的核心内容,更是其经济的重要表现形式,没有创意就没有新经济1。游戏设计是文化艺术创意和商品生产的结合,游戏产业的发展在中国的经济发展中具有十分重要的意义。2D游戏和3D游戏两个阶段是游戏的发展中经历过的。游戏设计,特别是3D游戏开发,综合运用了物理仿真、计算机图形学和网络通讯,并且在这几年得到猛发展的移动平台技术,游戏的发展趋势朝着轻量级、微创新、时间碎片化快速发展,如愤怒的小鸟、王者荣耀、絶地求生的玩家数量都超过了一亿。 国内外的发展状况 90年代初国外的3D游戏开始起步,第一部3D第一人

9、称射击游戏是美国的卡马克的重返德军总部,最早3D游戏引擎是由其开发的Doom引擎。国内3D游戏始于2003年,首款自主研发,目前,国内有了很多的研究在3D游戏上,但是由于国内3D技术起步较晚,技术方面想比外国还是有不小差距,从设计理念到开发制作,国内能有自主研发的3D游戏引擎的,只有屈指可数的互联网公司,大部分游戏公司和游戏开发者还在用国外大型游戏公司所开发的游戏引擎,如Unity3D,虚幻,寒霜。虽然近几年国内出现许多优秀的游戏团队和游戏公司,开发了数款质量较高的3D游戏,例如古剑奇谭系列,仙剑奇侠传系列等,但是比起模拟人生,魔兽世界,战地系列等国际游戏大作仍有不可逾越的差距,这也使得国内玩

10、家的财富大量流向国外。但是,国外开发的一款游戏引擎完美地解决了跨平台开发难的问题,那就是Unity3D引擎,虚拟机技术被运用到Unity3D中,独立于平台执行的游戏编译结果。1.3 论文组织结构论文从最初构思到分析实践,结合了专业3D游戏开发资料,进行了一个MMORPG游戏的设计制作,其中,具体介绍游戏的制作步骤,包括一系列代码的编写和内部结构的链接,论文分为六个部分,安排如下:第一部分:绪论,主要讲述了制作该毕业设计的背景,以及国内外对相关课题的研究现状以及本设计的大概介绍;第二部分:介绍了3D游戏的普遍结构以及Unity3D的大致介绍;第三部分:游戏的创意,游戏系统功能设计;第四部分:详细

11、介绍游戏的各个部分的制作,清晰明确游戏内部关系,采用由下到上的顺序层层拆析步骤;第五部分:运行游戏进行测试,打包封装;第六部分:结论以及游戏的缺陷和今后的改进。 2. 3D游戏的技术知识2.1 3D图形库API(Application Programming Interface)函数是编程人员经常调用的一种3D图形库,显卡与应用程序直接的接口定义为Unity3D图形库。从而与之沟通,硬件的驱动程序启动显卡内强大的3D图形处理功能,制作出具有3D的游戏。非常快速是3D图形库执行具有高度可移植性的特点,计算机图形学原理在设计中被严格遵循,符合普通人对3D的和光线等的认知,点、线、面的三维特征需要编

12、程人员用这些API函数定义,用合适的光照,合理的坐标系统和文理贴图再加上一个固定的参照系,就可以形成较为真实的3D场景2。其中的API函数定义为独立于任何程序设计语言的一组规范,在特定语言中的实现描述由国际标准化组织来制定。许多三维演示系统都用3D图形库作为三维图形生成和控制的编程接口。2.2 Unity3D2.2.1 Unity3D简介Unity3D是由Unity Technologies开发的一款全面整合的专业游戏引擎,其具有的功能使得开发人员可专注于游戏的设计而忽略底层的技术实现,达到快速开发的目的。Unity类似于Director,Blender game engine, Virtoo

13、ls 或 Torque Game Builder等利用交互的图型化开发环境为首要方式。软件其编辑器运行在Windows 和Mac IOS下3。其主要的特色有:图形动力:内部封装了DirectX和OpenGL图形渲染库,并附带一些常用的渲染组件及着色器脚本。物理仿真:Unity3d不但整合了Nvidia PhysX物理引擎,并在其基础上封装了游戏中常会用到的物理组件,如碰撞体、连接体等。跨平台性:可发布游戏至Windows、Mac、iOS、Android、Xbox、Wii或PS3平台,也可以利用Unity web player或者Flash插件发布网页游戏,支持Mac和Windows的网页浏览。

14、资源商城:开发人员可在资源商城中购买其他人开发的资源(代码、模型等),进行高效复用。资源服务器:Unity资源服务器是一个附加的版本控制的产品,但比起SVN更适合游戏团队中不同职位的人员共同使用(程序、策划、美术)。性能分析器:引擎中自带一个Profiler分析器,开发人员可在编辑器或者设备连线进行性能分析CPU和GPU不同阶段的效率4。2.2.2 Unity3D基本概念一个完整的Unity3d程序是由若干个场景(Scene)组合起来的,每个场景中又包含有许多游戏对象(GameObject),每个对象可以具有若干组件(Component),其中的继承自MonoBehavior的脚本组件进行初始

15、化、更新等操作,而我们在场景所看到的内容是由摄像头(Camera)来呈现并控制的。场景(Scene):场景是Unity3D程序的基本组成单位,任何一个Unity3D程序都是由若干场景组合而成,程序通过脚本在这些场景之间跳转。场景通过场景图的形式组织,场景图实际上是一种树形结构,其中每个节点就是一个游戏对象。对象与对象之间存在父子关系,即当父级对象移动、旋转、缩放时,子级对象也跟着一起变换5,如图2-1所示。图2-1 旋转一个父节点同时它的子节点也跟着旋转游戏对象(GameObject):在场景中按照场景图形式组织,场景图实际上是一种树形结构,树形层次结构中的节点,加入的特定组件后就成了有实际功

16、能的对象,如可渲染网格、摄像机、光源等,游戏对象可以打包成.prefab格式的文件方便复用6。组件(Component):组件可以是网格(Mesh)、光源(Light)、摄像机(Camera)、粒子系统(Particle)、物理碰撞体(Collider)、布料(Cloth)、连接体(Joint)、声音(Audio)、动画(Animation)以及最重要的脚本(Script)。Unity3D的设计是以面向对象理论为基础,Unity3D支持C#、JavaScript和Boo三种脚本语言,如果对象继承自MonoBehavior脚本对象,生命周期将交给Unity3D来管理,如图2-2所示。图2-2 M

17、onoBehavior的生命周期3. 游戏设计3.1 游戏创意随着移动硬件设备的日益强大,并且移动平台技术在这几年得到迅猛发展,移动平台上的游戏也出现了惊人的增长,轻量级、微创新、时间碎片化一直是移动游戏的发展趋势。游戏同样遵从以上三个特点,下面是简单的游戏策划:游戏名称:醉仙游戏类型:MMORPG类游戏游戏平台:Android游戏模式:闯关模式游戏玩法:玩家有初始装备,可以在开始进行基础攻击。玩家首先进入的是新手村,进行操作的熟练,以及熟悉游戏环境。然后以任务驱动式的方式进行游戏。正式的游戏在战斗场景进行,按照任务目标完成要击杀的怪物的数量,然后打败最后boss,完成任务,并获得相应的奖励,

18、以用来装备的升级和购买。游戏操作:界面左下角有操作人物移动的摇杆,控制可控制人物任意方向移动。右下角有技能释放键,分为一个主技能,三个副技能。3.2 游戏框架结构设计如前文所述,一个游戏包含多个场景,游戏模块为游戏提供了一些必须用到的功能,这些功能,都是完全独立与所有的场景存在的,它们并不知道到底有多少关卡,关卡的内容是什么。它们的主要工作,就是与游戏的控制单元进行信息的交换,从而支持游戏的进行。其中核心的模块为:图形渲染、物理仿真。3.3 游戏层次结构设计前文提到Unity3D中每个场景按照树形层次结构组织游戏对象,并且每个游戏对象可以拥有若干组件。所以整个游戏系统的实现必须遵守这种规范,在

19、这种规范下为了符合软件设计的高内聚、低耦合的原则,使用MVC模型设计了一套游戏的层次结构,这样的好处是使游戏的结构清晰简单,三层之间互相隔离、互不影响,日后功能的扩展方便。如图3-1所示。图3-1 游戏层次结构图游戏系统分为三个层来设计,分别是:视图层:主要为加入到场景层次结构的游戏对象,这些对象常常是渲染对象或摄像机。控制层:在主摄像机或者空对象中加入的管理脚本组件,这些脚本主要是针对对应的功能模块的进行控制及与其他功能模块进行通信,如界面管理类、网络联机管理类。模型层:主要是在渲染对象中加入的逻辑脚本组件,这些脚本对游戏对象进行逻辑处理7。4. 游戏实现4.1 场景渲染实现考虑到游戏的需求

20、,整个场景主要包括几类渲染对象,如天空盒、水面、地形、外部导入的3D模型、投影、粒子系统等,如图4-1所示。图4-1 游戏场景中的渲染对象下面主要介绍一些重要渲染模块的具体实现。4.2 地形在Unity3D中通过高度图来实现地形,高度图实际上是一张矩形的灰度图,在灰度模式中,颜色通过0255来表示,0代表黑色,255代表白色,像素越亮代表地势越高,255的像素代表此次顶点最高,反之亦然,所以像素灰度值和顶点的高度可以用公式 (1) 表示。其中L为像素的灰度值,、分别为Unity3D中定义的地形高度和地形最低点,求得网格顶点的高度y. (1)程序在需要渲染地形时通过读取这张图片,并按照灰度生成顶

21、点高度不一的矩形网格。这样大大减少了游戏模型体积9 。Unity3D中的地形模块不但可以导入高度图,还可以用笔刷为绘制地形纹理、树、草和岩石,所见即所得,大大减少了开发人员的工作量9。在新建了一个Project之后,先创建几个文件夹,用来存放做游戏所需要的所有素材,如:Gizmos,Materials,Scene,Script等,其中Gizmos用来存放贴图,Materials用来存放材质,Scene用来存放场景,Script用来存放脚本。保存第一个场景,放在Scene中,命名为demo,此时场景中为空,在GameObject中3D Object一个地形Terrain,如图4-2所示。图4-2

22、 创建地形在旁边的组建面板就可看到如下工具,如图4-3所示。图4-3 组建面板通过组建面板的Terrain组建,可以用地面升降,地面模糊,地图画笔等等工具对地图进行编辑。进行一系列的修饰后,原本空白的地图上就会有游戏的基本地图样式,如图4-4所示。图4-4 地图4.3 光照和场景元素在创建好地图之后会发现地图灰暗,当点击运行时候,会显示地图区域为黑色,这是因为场景中没有光源,此时在场景中按添加地形的方式添加一个平行光源,如图4-5所示。图4-5 平行光源同样可通过调整光源组建面板中的Intensity来调整光的强弱,可从图4-5中看出,添加光源过后明显使得地图光亮了。接下来添加场景中的元素,例

23、如树,建筑物,装饰等等,通过Assets中的Import Package选项来导入我需要的素材,所有的素材将放在预置Prefabs文件夹中,这样可以方便重复使用,既节约了硬件资源又大量降低了我的重复劳动,如图4-6所示。在元素等放置完毕后,地图就做好了。图4-6 预置元素4.4 导入模型现在开始导入各类模型。Project面板下任意位置右击,选中Import Packet下的custome Packet,如下图4-7所示。并按着模型的存放位置,选择导入即可。图4-7 导入模型这里的模型导入不光有任务以及场景的3D模型,还有2D的贴图,图片等模型,以完成游戏登录界面的搭建。4.5 摄像机因为游戏

24、的场景会比较大,我们需要摄像机跟随人物的移动到场景的各个部分。接下来需要为摄像机添加脚本,在人物的时候可以移动摄像机。在为摄像机创建脚本前我们需要先创建一个空游戏体作为摄像机观察的目标点,在导入人物模型时方便替换,我们要创建它只有很少的代码。如图4-8所示。图4-8脚本4.6 游戏UI界面接下来,需要创建一个游戏管理器,它有几个作用,包括UI显示,用户名,赛区选择,以及游戏开始。创建Sprite作为背景,3个Button为三个按键,分别表示用户名,赛区选择,游戏开始。如图4-9所示。页面上的三个按键,按键的背景为sprite,文字为UIText。两者放在同一个空物体下做统一管理,为这个空物体添

25、加UIButton组件,使其具有点击功能。图4-9 游戏管理器点击用户名会自动弹出Tips如图4-10所示,为用户的登录及注册。图4-10 用户名此tips为滑动进入,从一个坐标位置在规定时间内移动到指定坐标位置,此为Unity自带的Tween功能实现,如图4-11所示。图4-11 Tween输入框秩序在需要输入文字的部分添加UIText组件,并为添加UIInput组件即可实现输入功能。如图4-12所示。图4-12 输入框组件上方的关闭按钮与开始按钮,点击后均为弹出另外一个Tips,均使用相同的方法,只是将运动的坐标反向设置,即可。这里的注册按钮为玩家为没有注册信息的玩家注册信息,在本地有小型

26、数据库,用于保存玩家的注册信息,在“设置密码”与“确认密码”两个信息进行比较,若不一致,方便提醒用户。如图4-13所示。图4-13 密码不一致赛区选择是为了防止服务器压力过大导致崩溃而采取的分流措施,本质上是与后端服务器进行交互,而租赁服务器会有很高的代价,本论文不做过多的设计只说明设计思路。选择不同的赛区时,点击不同的按钮会将相应的信息发送到服务器,服务器做出分配10。如图4-14所示。图4-14 赛区选择多个赛区在窗口不能一次显示完全,这里用的Scroll View,可以实现滑动效果。这里上方显示的“已选”赛区文字用脚本控制,获取按钮上文字,并显示在“已选”位置,脚本如图4-15所示。图4

27、-15 赛区选择脚本开始游戏时可以选定人物角色,并为人物定义名字,这与上述玩家创建自己的账号方法相似。4.7 新手村界面图4-16 异步加载脚本图4-17 异步加载效果图图4-18新手村场景新手村实现的功能主要是玩家购买装备,装备的升级以及任务的领取,体力及历练值的恢复,这里的两个值恢复为根据时间自动恢复。每分钟恢复一个体力值和历练值,这样可以防止玩家过于沉迷游戏,有充足的休息时间。每次进行游戏会消耗一定的体力值。体力值回复的脚本文件及效果图如图4-19和4-20所示。图4-19 体力恢复脚本图4-20 体力恢复Tips这里的金币及钻石是在完成任务以后自动获取的,更名功能与前面设置人物名称的功

28、能相同不作过多解释。新手村的核心功能是背包系统的搭建,UI界面秩序将模型素材按着想要的方式摆放即可,对于N多游戏装备不能完全保存在本地,这样会加重本地内存的负担,导致移动端产生卡顿等现象,影响游戏的体验感。避免这种情况的方式就是将模型保存在服务器,本地只要预加载一定数量即可。装备又有不同的属性,装备的模型也不一样,但是要实现一一对应,将装备的属性信息上再加一条ID属性,模型也对应的加上ID,只要匹配两者的ID一直,其他属性信息就一定是对应的。装备的属性信息存在配置表中为Text文件,用脚本代码控制读取转化为引擎可用的信息。配置表信息如图4-21所示,文件转化脚本见附录1。图4-21装备配置表技

29、能系统的实现与背包系统的实现大体相似,从配置表中读取技能信息,在与模型一一对应。配置表信息如图4-22所示,技能界面效果图如4-23所示,代码与背包相似不作过多阐述。图4-22技能配置表图4-23技能效果图这里技能涉及到升级,技能具有基础等级,点击升级按钮时,技能的等级会升高,这里采用MVC模式。脚本见附录2。任务系统中读取配置表以及配置表的中的信息已按钮一一对应的方式与背包中的方法时相似的。任务系统的核心功能是在玩家领取任务以后,游戏主角回自动跑向NPC完成对话,即任务的交接。这里使用的是自动寻路功能11 。这里只要为主角添加寻路组件,如图4-24所示。图4-24 寻路组件此组件可以设置人物

30、寻路的速度,转弯时的角速度,以及寻路停止时与目标点的距离。寻路的前提是将要寻路的地面烘焙成静态的,相当于为寻路划定寻路路线。烘焙的图4-25烘焙组件方式及效果图如图4-25和4-26所示。图4-26 烘焙效果图游戏的基本功能就是玩家可以操纵游戏主角不同方向的移动,这里需要第三方插件EasyTouch12,插件的导入方式与模型的导入方式相同,导入后在Hierarchy面板会有如4-27所示的组件。图4-27EasyTouch插件添加插件以后为主角添加一个脚本,EasyTouch默认的名称为New joystick,在为主角添加的脚本中让脚本找到这个名字,就可将第三方插件与游戏主角联系起来,脚本文

31、件如下:using System.Collections;using System.Collections.Generic;using UnityEngine;public class Move : MonoBehaviour Animator anim; public float MoveSpeed; void OnEnable() anim = this.GetComponent(); EasyJoystick.On_JoystickMove += OnJoystickMove; EasyJoystick.On_JoystickMoveEnd += OnJoystickMoveEnd; v

32、oid OnJoystickMove(MovingJoystick move) float PositionX = -move.joystickAxis.x; /获取摇杆偏移摇杆中心的x坐标 float PositionY = -move.joystickAxis.y; /获取摇杆偏移摇杆中心的y坐标 if (move.joystickName = New joystick1) if (PositionX != 0 | PositionY != 0) transform.LookAt(new Vector3(transform.position.x + PositionX, transform

33、.position.y, transform.position.z + PositionY); transform.Translate(Vector3.forward*Time.deltaTime * MoveSpeed); anim.SetBool(walk, true); void OnJoystickMoveEnd(MovingJoystick move) anim.SetBool(walk, false); void OnDestroy() EasyJoystick.On_JoystickMove -= OnJoystickMove; EasyJoystick.On_JoystickM

34、oveEnd -= OnJoystickMoveEnd; 这里在移动时与移动后,要执行的是动画的播放和停止。需要为主角添加Animator组件13,在Inspector面板下的Add Component中选中即可,如图4-28所示。图4-28 添加组件同时也要在添加Animator是创建状态基,方便切换任务的状态,这里添加状态基在战斗场景做详细介绍。4.8 战斗场景领取完任务后地图界面上选取要进的地图位置,开始进入战斗场景,这里又涉及到场景的跳转,使用的仍然是异步加载功能进行页面的过度。战斗场景中,主角将要进行的是击杀怪物,首先击杀小怪物,当小怪物全部击杀完成的时候,Boss会自动出现,并主动

35、向主角移动,当接近主角一定范围内的时候,将进行主动攻击。战斗场景的效果图如图4-29所示。图4-29 战斗场景效果图战斗场景中的技能释放按钮与前面Tips中的按钮实现效果相同,将导入的模型摆放在相应的位置后,为按钮添加点击事件,及点击按钮时执行某种事件。添加点击事件脚本见附录3。 当点击按钮时开始播放攻击动画以及动画的特效14。这是战斗场景的主要内容。因为不同的攻击动画以及行走的动画 之间要不停的不定时的切换,因此这里主要运用的是动画状态基。战斗场景中的动画状态基如图4-30所示。图4-30 动画状态基这里不同格子是不同动画,左侧的Parameters控制不同的线路是否为开启状态,如属于开启,

36、动画就会从当前的状态沿线路进入另一个状态,如全部处于关闭状态,就回播放默认动画,这样就可以很方便的实现在行走与攻击状态下的动画之间的切换15。进入战斗场景后,小怪物会自动向主角移动,当到达一定距离时就会发起攻击。引擎会实时监测怪物与主角距离,这里使用监本文件就行距离的检测脚本如下: void Start() navm = GetComponent(); anim = GetComponent(); void Update() dis = Vector3.Distance(this.transform.position, player.position); if (dis=3) anim.Set

37、Bool(Walk, true); navm.SetDestination(player.position); anim.SetBool(attack, false); else anim.SetBool(Walk, false); player.LookAt(this.transform);Bool(attack, true); if (isDie) anim.SetBool(die, true); 怪物向主角移动采用的是自动寻路,当两者之间距离大于3的时,怪物播放行走的动画,小于3时,开始播放攻击的动画。4.9 生命条敌人在受到攻击的时候,找们并不知道它受到了多少伤害,为了能够提示它的剩余

38、生命值,需要为它制作一个生命条。本文准备好了一个平面模型,并附有一张贴图,贴图由简单的黄色和红色组成,我们将使用改变平面模型UV的方式16,使黄色表示剩余生命值,红色表示失去的生命,如图4-31所示。图4-31 生命条创建脚本如下:public class planBlood : MonoBehaviour public GameObject Mounster; public Slider bloodSlider; void Start() bloodSlider.value = bloodSlider.maxValue; void OnTriggerEnter(Collider other)

39、 /主技能掉血 if (other.gameObject.tag=Blood) print(主技能生效); bloodSlider.value -= 0.01f; /一技能掉血bject.tag=Ice) print(一技能生效); bloodSlider.value -= 0.02f; /二技能掉血 if (other.gameObject.tag=boss) print(二技能生效); bloodSlider.value -= 0.03f; /三技能掉血 if (other.gameObject.tag = Crow) print(三技能生效); bloodSlider.value -=

40、0.04f; /怪物死亡 if (bloodSlider.value=0) planGoPlayer.isDie = true; Destroy(Mounster, 5); MonGoPlayer.isGo = true; 这个脚本中不同的技能产生的伤害程度不一样,当怪物受到攻击时,血条会减少,方便玩家看到怪物的受伤程度。每次攻击时,当任务的武器碰到怪物时才会产生伤害,这里使用的事碰撞检测,为怪物和武器添加碰撞组件17如图4-32所示。图4-32 碰撞检测组件 勾选Is Trigger是组件才是碰撞检测组件18。这样就可以检测到怪物是否受到攻击。5. 游戏测试5.1 在Unity3D中运行测试

41、点击软件中的运行按钮,如图5-1所示。 图5-1 测试按钮游戏在软件中测试运行,如图5-2,5-3,5-4所示。图5-2 软件中测试图 5-3软件中测试5-4 软件中测试游戏能够正常运行,没有报错,测试成功。5.2 Android平台测试点击File选项中的Build Settings,出现如图5-5窗口。图5-5 平台选择在选择了Android后,点击左下角的Switch Platform将当前开发平台转换成Android开发平台,然后点击Player Settings进行设置,如图5-6所示。图5-6 设置名称设置了名称和打包后的图标后,还需要进行其它设置。在Resolution and

42、Presentation中Default Orientation选项设置游戏在Android客户端中按横屏还是竖屏显示,由于本设计为横屏游戏,为了消除竖屏可能带来的问题,所以选择Landscape横屏显示。在Other Settings中需要选择Android的系统版本,详细设置如图5-7。图5-7 其它设置设置完成后,点击Build,经过短时间的处理后,一个安卓Apk就打包完成。将其安装在Android测试机上,本测试机型号为:魅族Note3。安装后如图5-8所示。图5-8 安装在测试机打开游戏,出现游戏开始界面如图5-9。图5-9 游戏开始新手村如图5-10所示。图5-10 选择关卡进入游

43、戏,画面如图5-11所示。图5-11 游戏画面5.3 测试结果在Unity3D的Mono模拟器中运行结果,游戏可以正常流畅运行,界面简洁易懂,操作简单,且画面鲜艳。在Android平台上测试运行时,游戏出现较严重的卡顿、延迟现象,虽然游戏能够正常运行,但是体验较差。总 结一个基于Android平台的MMORPG游戏的完成,也标志着毕业论文的工作到达尾声。在整个的设计制作过程中,我收获了许多,同时发现了一些问题,最后我将对今后的工作有更多的展望。在设计开始之前,本人大致了解了简单的游戏项目开发,但是由于没有系统地学习脚本编写,所以在动手制作游戏过程中,经常卡在脚本的编写上。例如前面设计中的路点设置的脚本就成为开发中很大的一个难题。在查阅资料和视频之后,成功将一些问题解决,但是薄弱点依然存在。同学和老师在游戏的开发中给予了本人很大的帮助,推荐了一些有用的资料和教程,让游戏制作成功。游戏虽然制

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

当前位置:首页 > 网络技术 > 后端技术

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报