首页 基于Android平台的塔防游戏设计论文

基于Android平台的塔防游戏设计论文

举报
开通vip

基于Android平台的塔防游戏设计论文基于Android平台的塔防游戏设计论文 基于Android平台的塔防游戏设计 Design The Tower Defense Game Based On Android Platform 学生姓名: XX 学生学号: 107102XX 专业名称: 计算机科学与技术 指导教师: XX(副教授) 计算机与信息工程学院 2014年6月16日 独创性声明 本人声明所呈交的毕业设计(论文)是本人在指导教师指导下进行的研究工作和取得的研究成果,除了文中特别加以引用标注之处外,论文中不包含其他人已经发表或撰...

基于Android平台的塔防游戏设计论文
基于Android平台的塔防游戏设计 论文 政研论文下载论文大学下载论文大学下载关于长拳的论文浙大论文封面下载 基于Android平台的塔防游戏设计 Design The Tower Defense Game Based On Android Platform 学生姓名: XX 学生学号: 107102XX 专业名称: 计算机科学与技术 指导教师: XX(副教授) 计算机与信息 工程 路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理 学院 2014年6月16日 独创性声明 本人声明所呈交的毕业设计(论文)是本人在指导教师指导下进行的研究工作和取得的研究成果,除了文中特别加以引用标注之处外,论文中不包含其他人已经发表或撰写过的研究成果,没有伪造数据的行为。 毕业设计(论文)作者签名: 签字日期:2014年6月16日 毕业设计(论文)版权使用授权 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf 本毕业设计(论文)作者完全了解学校有关保留、使用论文的规定。同意学校保留并向有关管理部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权天津城建大学可以将本论文的全部或部分内容编入有关数据进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本论文。 (保密的毕业设计(论文)在解密后适用本授权说明) 毕业设计(论文)作者签名: 指导教师签名: 签字日期:2014年6月16日 签字日期: 2014年6月16日 摘 要 Android是一种基于Linux的自由及开放源代码的操作系统,Unity3D是最近几年非常热门的一种跨平台能力强的开发引擎,被广大游戏开发者所喜爱。在目前的Android手机应用开发界,Unity几乎成为Android标准工具。 本文将展示一个用Unity软件来设计和开发Android塔防游戏的全过程。按照游戏的开发思路,从相关知识介绍、游戏设计、游戏实现到软件测试一步步展开工作,完成毕业设计的最终作品。本文将讲述的重点放在游戏实现这一环节,从第一个场景建立开始,到模型的导入,讲述脚本的编写等具体细节,直到项目完成;游戏的测试将在Unity3D软件中,PC上和Android设备上分别进行测试,并分析测试结果。 关键词:Android;Unity;塔防游戏 ABSTRACT Android is a Linux-based free and open source operating 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 shows a Unity of the software to the whole process of designing and developing Android Tower Defense game. Along the lines of game development, from relevant knowledge by testing, game design, game achieved step by step work, and completed the graduation design of the final product. The focus of this paper will describe in-game to achieve this step, starting from the first scene to establish, to import the model about details such as script writing, until the project is completed in Unity3D software, the game tests, were done on the PC and on your Android device to test and analyze the test results. Key words:Application Development;Android;Unity;Tower Defense 目 录 第1章 绪论 ...............................................................................................................................0 1.1 选题的目的和意义 ..........................................................................................................0 1.2 国内外的发展状况 ..........................................................................................................0 1.3 论文组织结构 ..................................................................................................................2 第2章 3D游戏的技术知识 .....................................................................................................3 2.1 3D图形库 .........................................................................................................................3 2.2 物理引擎 ..........................................................................................................................3 2.2.1 物理引擎简介 ...........................................................................................................3 2.2.2 物理引擎基本架构 ...................................................................................................4 2.3 Unity3D .............................................................................................................................5 2.3 Unity3D简介 ................................................................................................................5 2.3 Unity3D基本概念 ........................................................................................................5 第3章 游戏设计 .......................................................................................................................7 3.1 游戏创意 ..........................................................................................................................7 3.2 游戏框架结构设计 ..........................................................................................................7 3.3 游戏层次结构设计 ..........................................................................................................7 第4章 游戏实现 .......................................................................................................................9 4.1 场景渲染实现 ..................................................................................................................9 4.2 地形 ..................................................................................................................................9 4.3 光照和场景元素 ............................................................................................................ 11 4.4 怪物通道 ........................................................................................................................12 4.5 摄像机 ............................................................................................................................13 4.6 游戏UI界面..................................................................................................................15 4.7 路点建设 ........................................................................................................................18 4.8 敌人 ................................................................................................................................20 4.9 敌人生成器 ....................................................................................................................21 4.10 防守单位 ......................................................................................................................22 4.11 生命条 ..........................................................................................................................23 4.12 自定义按钮 ..................................................................................................................25 第5章 游戏测试 .....................................................................................................................27 5.1 在Unity3D中运行测试 ................................................................................................27 5.2 封装打包测试 ................................................................................................................27 5.3 封装打包测试 ................................................................................................................30 5.4 封装打包测试 ................................................................................................................33 总结 ...........................................................................................................................................34 致谢 ...........................................................................................................................................35 参考文献 ...................................................................................................................................35 第1章 绪论 1.1 选题的目的和意义 这几年,中国经济以8%左右的速度持续平稳的增长,而在刚刚过去的2012年中国游戏市场实际销售收入602.8亿元,同比增长率为35.1%,首次突破600亿规模。游戏产业己经成为经济市场中增长速度最快的热点,是众所关注的焦点。游戏是文化创意产业里的一部分,创意经济是知识经济的核心内容,更是其经济的重要表现形式,没有创意就没有新经济。游戏设计是文化艺术创意和商品生产的结合,游戏产业的发展在中国的经济发展中具有十分重要的意义: 1.可以促进经济发展,拉动就业,带动其它文化产业发展; 2.有利于保护民族的文化传统和价值观,抵制文化入侵; 3.提供健康快乐的大众娱乐方式,提升消费者的休闲体验感受。 与此同时,随着手机等移动设备向着微型PC方向发展,用户对手机应用的要求也越来越高,追求高画质,高可玩性及高流畅性。向3D游戏发展是手机游戏发展的必然趋势。 2D游戏和3D游戏两个阶段是游戏的发展中经历过的。游戏设计,特别是3D游戏开发,综合运用了物理仿真、计算机图形学和网络通讯,并且在这几年得到猛发展的移动平台技术,游戏的发展趋势朝着轻量级、微创新、时间碎片化快速发展,如《愤怒的小鸟》、《顽皮鳄鱼爱洗澡》、《神庙逃亡》的玩家数量都超过了一亿。 选择用Unity3D来完成本毕业设计,不仅是顺应了当前游戏开发的发展趋势,更是对个人技术及能力的一种锻炼。 1.2 国内外的发展状况 90年代初国外的3D游戏开始起步,第一部3D第一人称射击游戏是美国的卡马克的《重返德军总部》,最早3D游戏引擎由其开发的Doom引擎。国内3D游戏始于2003年,首款自主研发,目前,国内有了很多的研究在3D游戏上,但是由于国内3D技术起步较晚,技术方面想比外国还是有不小差距,从设计理念到开发制作,国内能有自主研发的3D游戏引擎的,只有屈指可数的互联网公司,大部分游戏公司和游戏开发者还在用国外大型游戏公司所开发的游戏引擎,如Unity3D,虚幻,寒霜。虽然国内今年出现许多优秀的游戏团队和游戏公司,开发了数款质量较高的3D游戏,例如《古剑奇谭》系列,《仙剑奇侠传》系列等,但是比起《模拟人生》,《魔兽世界》,《战地》系列等国际游戏大作仍有不可逾越的差距,这也使得国内玩家的财富大量流向国外。 随着移动设备的硬件日益强大,如手机的硬件相比于10年前电脑的配置还要强大,这样使用者在使用的时候,就会有大量应用的需求,目前来说,有两种主流的手机操作系统:Android和IOS,这两种操作系统之所以成为主流,就是因为庞大的系统应用在背 第1章 绪论 后支持,所以,应用的开发在手机系统的竞争中尤为重要。然而应用的跨平台移植会带来大量的问题,例如开发语言不同,移植代价太高等,但是,国外开发的一款游戏引擎完美地解决了跨平台开发难的问题,那就是Unity3D引擎,虚拟机技术被运用到Unity3D中,独立于平台执行的游戏编译结果。对于3D引擎的研究,在国内还处于起步阶段,所以我们认真研究国外的优秀游戏引擎,对将来自主开发3D游戏引擎有巨大的帮助。 1.3 论文组织结构 论文从最初构思到分析实践,结合了专业3D游戏开发资料,进行了一个塔防游戏的设计制作,其中,具体介绍游戏的制作步骤,包括一系列代码的编写和内部结构的链接,论文分为六个部分,安排如下: 第一部分:绪论,主要讲述了制作该毕业设计的背景,以及国内外对相关课题的研究现状以及本设计的大概介绍; 第二部分:介绍了3D游戏的普遍结构以及Unity3D的大致介绍; 第三部分:塔防游戏的创意,游戏系统功能设计; 第四部分:详细介绍游戏的各个部分的制作,清晰明确游戏内部关系,采用由下到上的顺序层层拆析步骤; 第五部分:运行游戏进行测试,打包封装; 第六部分:结论以及游戏的缺陷和今后的改进。 1 第2章 3D游戏的技术知识 2.1 3D图形库 API(Application Programming Interface)函数是编程人员经常调用的一种3D图形库,显卡与应用程序直接的接口定义为Unity3D图形库。从而与之沟通,硬件的驱动程序启动显卡内强大的3D图形处理功能,制作出具有3D的游戏。 非常快速是3D图形库执行具有特点,具有可移植性并且高度的,计算机图形学原理在设计中被严格遵循,符合普通人对3D的和光线等的认知,点、线、面的三维特征需要编程人员用这些API函数定义,用合适的光照,合理的坐标系统和文理贴图再加上一个固定的参照系,就可以形成较为真实的3D场景。其中的API函数定义为独立于任何程序设计语言的一组规范,在特定语言中的实现描述由国际标准化组织来制定。许多三维演示系统都用3D图形库作为三维图形生成和控制的编程接口。 2.2 物理引擎 2.2.1 物理引擎简介 在游戏这项综合应用中中,除了华丽的画面渲染外,作为表现虚拟世界系统内在物理规律的计算是必不可少的。当被模拟的刚体的运动比较简单,可以在一定程度上通过编程或编写脚本来实现,如简单的加速和减速牛顿物理运动。但当模拟比较复杂的物体的碰撞、滚动、滑动或者弹跳的时候,通过编写底层算法会造成工程延误,这显然不符合软件工程的思想。成熟的物理引擎能够允许更复杂的物理模拟,像球形关节、轮子、气缸或者铰链,有些也支持非刚性体的物理属性,比如流体和布料。 物理引擎接受的输入是由外界调用模块传递过来的场景信息以及场景中物体的位置信息。根据调用模块的不同,可能输出三种计算结果:场景与物体以及物体之间是否发生碰撞、碰撞发生的具体位置以及发生碰撞后物体的具体位置,并将计算结果传送给调用模块。如图2-1所示。 图2-1 物理引擎功能示意图 第2章 3D游戏的技术知识 2.2.2 物理引擎基本架构 物理引擎一般分为两个重要部分,即碰撞检测和物理学世界。如图 2-2 所示。 图2-2 物理引擎基本架构 碰撞检测模块是物理引擎的核心模块,建立在物理学世界的基础上的。其由初步碰撞检测、精确碰撞检测和精确求交三个基本模块组成,各模块的执行顺序。如图2-3所示。 图2-3 碰撞检测模块 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 图 在初始化阶段,碰撞检测模块给虚拟世界每个物体建立包围盒,比较常用的包围盒算法有AABB(Axis-aligned bounding box)、包围球、胶囊体等。逐步求精阶段将整个虚拟世界进行空间划分,主要用到数据结构有八叉树、k-d树和BSP树等。最后再精确求交 3 模块中使用凸体算法和射线检测算法得到精确的碰撞信息。 2.3 Unity3D 2.3.1 Unity3D简介 Unity3D是由Unity Technologies开发的一款全面整合的专业游戏引擎,其具有的功能使得开发人员可专注于游戏的设计而忽略底层的技术实现,达到快速开发的目的。Unity类似于Director,Blender game engine, Virtools 或 Torque Game Builder等利用交互的图型化开发环境为首要方式的软件其编辑器运行在Windows 和Mac OS X下。其主要的特色有: 图形动力:内部封装了DirectX和OpenGL图形渲染库,并附带一些常用的渲染组件及着色器脚本。 物理仿真:Unity3d不但整合了Nvidia PhysX物理引擎,并在其基础上封装了游戏中常会用到的物理组件,如碰撞体、连接体等。 跨平台性:可发布游戏至Windows、Mac、iOS、Android、Xbox、Wii或PS3平台,也可以利用Unity web player或者Flash插件发布网页游戏,支持Mac和Windows的网页浏览。 资源商城:开发人员可在资源商城中购买其他人开发的资源(代码、模型等),进行高效复用。 资源服务器:Unity资源服务器是一个附加的版本控制的产品,但比起SVN更适合游戏团队中不同职位的人员共同使用(程序、策划、美术)。 性能分析器:引擎中自带一个Profiler分析器,开发人员可在编辑器或者设备连线进行性能分析CPU和GPU不同阶段的效率。 2.3.2 Unity3D基本概念 一个完整的Unity3d程序是由若干个场景(Scene)组合起来的,每个场景中又包含有许多游戏对象(GameObject),每个对象可以具有若干组件(Component),其中的继承自MonoBehavior的脚本组件进行初始化、更新等操作,而我们在场景所看到的内容是由摄像头(Camera)来呈现并控制的。 场景(Scene):场景是Unity3D程序的基本组成单位,任何一个Unity3D程序都是由若干场景组合而成,程序通过脚本在这些场景之间跳转。场景通过场景图的形式组织,场景图实际上是一种树形结构,其中每个节点就是一个游戏对象。对象与对象之间存在父子关系,即当父级对象移动、旋转、缩放时,子级对象也跟着一起变换,如图2-4所示。 第2章 3D游戏的技术知识 图2-4 旋转一个父节点同时它的子节点也跟着旋转 游戏对象(GameObject):在场景中按照场景图形式组织,场景图实际上是一种树形结构,树形层次结构中的节点,加入的特定组件后就成了有实际功能的对象,如可渲染网格、摄像机、光源等,游戏对象可以打包成.prefab格式的文件方便复用。 组件(Component):组件可以是网格(Mesh)、光源(Light)、摄像机(Camera)、粒子系统(Particle)、物理碰撞体(Collider)、布料(Cloth)、连接体(Joint)、声音(Audio)、动画(Animation)以及最重要的脚本(Script)。Unity3D的设计是以面向对象理论为基础,Unity3D支持C#、JavaScript和Boo三种脚本语言,如果对象继承自MonoBehavior脚 -5所示。本对象,生命周期将交给Unity3D来管理,如图2 图2-5 MonoBehavior的生命周期 5 第3章 游戏设计 3.1 游戏创意 随着移动硬件设备的日益强大,并且移动平台技术在这几年得到迅猛发展,移动平台上的游戏也出现了惊人的增长,轻量级、微创新、时间碎片化一直是移动游戏的发展趋势。 笔者按照这些思路产生了制作一款新的3D塔防游戏的想法,游戏同样遵从以上三个特点,下面是简单的游戏策划: 游戏名称:《五岳乾坤》 游戏类型:3D塔防益智类游戏 游戏平台:PC、Android 游戏模式:过关模式 游戏玩法:玩家有初始经济10,可以在开始建立两个防御塔,怪物进入路线后,一旦进入防御塔的攻击范围,会被防御塔攻击,直到怪物血量减少到0,每死亡一个怪物,经济会加2,这样,可以继续建造防御塔。每一波结束后,下一波怪物会比上一波怪物的血量更多,这就需要建造更多防御塔。 游戏操作:鼠标前后拖动来查看地图各个地点,点击防御塔建造按钮然后点击空地可以建造防御塔。 3.2 游戏框架结构设计 如前文所述,一个游戏包含多个场景,玩家根据当前的游戏进度和选项进入不同场景。而游戏模块为游戏提供了一些必须用到的功能,这些功能,都是完全独立与所有的场景存在的,它们并不知道到底有多少关卡,关卡的内容是什么,它们的主要工作,就是与游戏的控制单元进行信息的交换,从而支持游戏的进行。 塔防游戏没有复杂的游戏系统,更加侧重于游戏可玩性的设计,并且由于使用Unity3D引擎,省去了许多底层模块的设计,其中核心的模块为:图形渲染、物理仿真。 3.3 游戏层次结构设计 前文提到Unity3D中每个场景按照树形层次结构组织游戏对象,并且每个游戏对象可以拥有若干组件。所以整个游戏系统的实现必须遵守这种规范,在这种规范下为了符合软件设计的高内聚、低耦合的原则,使用MVC模型设计了一套游戏的层次结构,这样的好处是使游戏的结构清晰简单,三层之间互相隔离、互不影响,日后功能的扩展方便。 如图3-1所示。 第3章 游戏设计 cmp sequence 视图层 MainCameraGameObject2GameObject3Hierarchy: …… 控制层 Component:NetworkManagerUIManager …… ?use? 逻辑层 Component:Component4Component5Component1Component2Component3…… 图3-1 游戏层次结构图 游戏系统分为三个层来设计,分别是: 视图层:主要为加入到场景层次结构的游戏对象,这些对象常常是渲染对象或摄像 机。 控制层:在主摄像机或者空对象中加入的管理脚本组件,这些脚本主要是针对对应 的功能模块的进行控制及与其他功能模块进行通信,如界面管理类、网络联机管理类。 模型层:主要是在渲染对象中加入的逻辑脚本组件,这些脚本对游戏对象进行逻辑 处理。 7 第4章 游戏实现 4.1 场景渲染实现 考虑到游戏的需求,整个场景主要包括几类渲染对象,如天空盒、水面、地形、外部导入的3D模型、投影、粒子系统等,如图4-1所示。 图形渲染 3D模型投影粒子系统天空盒水面地形 图4-1 游戏场景中的渲染对象 下面主要介绍一些重要渲染模块的具体实现。 4.2 地形 塔防游戏的场景通常比较简单,就像一个棋盘格,可以在上面摆放防守单位,专门留给敌人一条通道。在这个实例中,我们使用二维数组来点示场放中的格子, 每个格只有两种状态,允许摆放防守单位或不允许。 在Unity3D中通过高度图来实现地形,高度图实际上是一张矩形的灰度图,在灰度模 代表黑色,255代表白色,像素越亮代表地势越高,255式中,颜色通过0~255来表示,0 的像素代表此次顶点最高,反之亦然,所以像素灰度值和顶点的高度可以用 公式 小学单位换算公式大全免费下载公式下载行测公式大全下载excel公式下载逻辑回归公式下载 (1) 表 yy示。其中L为像素的灰度值,、分别为Unity3D中定义的地形高度和地形最低heightmin 点,求得网格顶点的高度y. Ly,height,,yy (1) min255 程序在需要渲染地形时通过读取这张图片,并按照灰度生成顶点高度不一的矩形网格。这样大大减少了游戏模型体积。 Unity3D中的地形模块不但可以导入高度图,还可以用笔刷为绘制地形纹理、树、草和岩石,所见即所得,大大减少了开发人员的工作量。 在新建了一个Project之后,我习惯于先创建几个文件夹,用来存放做游戏所需要的所有素材,如:Gizmos,Materials,Scene,Script等,其中Gizmos用来存放贴图,Materials用来存放材质,Scene用来存放场景,Script用来存放脚本。 第4章 游戏实现 保存第一个场景,放在Scene中,命名为demo,此时场景中为空,在GameObject中Create Other一个地形Terrain,如图4-2所示。 图4-2 创建地形 在旁边的组建面板就可看到如下工具,如图4-3所示。 图4-3 组建面板 通过组建面板的Terrain组建,可以用地面升降,地面模糊,地图画笔等等工具对地图进行编辑。进行一系列的修饰后,原本空白的地图上就会有塔防游戏的基本地图样式,如图4-4所示。 9 图4-4 地图 4.3 光照和场景元素 在创建好地图之后会发现地图灰暗,当点击运行时候,会显示地图区域为黑色,这是因为场景中没有光源,此时我在场景中按添加地形的方式添加一个平行光源,如图4-5所示。 图4-5 平行光源 同样可通过调整光源组建面板中的Intensity来调整光的强弱,可从图4-5中看出,添加光源过后明显使得地图光亮了。 接下来添加场景中的元素,例如树,终点,装饰等等,通过Assets中的Import Package选项来导入我需要的素材所有的素材我将它们放在预置Prefabs文件夹中,这样可以方便重复使用,既节约了硬件资源又大量降低了我的重复劳动,如图4-6所示。在元素等放 第4章 游戏实现 置完毕后,地图就做好了。 图4-6 预置元素 4.4 怪物通道 塔防游戏需要怪物沿着固定的路线前进,路线中不允许放置防御塔,路线之外可以放置,这就需要用脚本对地图进行编辑。 首先,创建脚本GridNode.cs,代码如下图4-7所示。 图4-7 脚本GridNode.cs 这个脚本把地图上的方格会设置两种属性,一种是可以放置防御塔GuardPosition另一种就是不允许放置防御塔CanNotStand。 11 接下来将地图设置方格,创建GridMap.cs脚本,它会生成一个范围可控的网格,将地图盖住,当BuildMap被执行时,网格将在地图上显示出来,此时,如果网格上有物体挂载了GridNode.cs脚本,并设定为CanNotStand时,物体覆盖的网格将变为红色,同时运行时不可在此区域建造防御塔。 在场景中创建空物体,并挂载GridNode.cs同时设置为CanNotStand,摆放在地图中通道上,这样就可以使通道无法建造防御塔了。如图4-8所示。 图4-8 设置方格属性 4.5 摄像机 因为游戏的场景会比较大,我们需要移动摄像机才能观察到场景的各个部分。接下来需要为摄像机添加脚本,在移动鼠标的时候可以移动摄像机。 在为摄像机创建脚本前我们需要先创建一个空游戏体作为摄像机观察的目标点,并为其创建脚本CameraPoint.cs,它只有很少的代码。如图4-9所示。 图4-9 脚本CameraPoint.cs 接下来创建脚本GameCamera.cs,并将其指定给场景中的摄像机。 第4章 游戏实现 图4-10 脚本GameCamera.cs 在这个脚本的Start 函数中, 我们首先获得了前面创建的CameraPoint,它将作为摄 13 像机目标点的参考。 在Follow 函数中,摄像机会按预设的旋转和距离始终跟随CameraPoint 目标点。 LateUpdate 函数和Update 函数的作用一样, 不同的是它始终会在执行完Update 后执行,我们在这个函数巾调用Follow 函数,确保在所有的操作完成后再移动摄像机。 Control函数的作用是移动CameraPoint目标点,因为摄像机的角度和位置始终跟随这个目标点,所以也会随着目标点的移动而移动。 4.6 游戏UI界面 接下来,需要创建一个游戏管理器,它有几个作用,包括UI显示,控制鼠标操作和显示调试信息等。 创建3个GUI Text,分别表示游戏中的敌人进攻波数,我方生命和我方的点数,如图4-11所示。 图4-11 GUI Text 创建一个空游戏体作为游戏管理器,确定它的坐标位置为0,将前面创建的文字 作为它的子物体,如图4-12所示。 图4-12 子物体 创建脚本GameManager.cs,指定给前面创建的游戏管理器,添加代码如图4-13至4-15所示。 第4章 游戏实现 图4-13 脚本GameManager.cs(1) 15 图4-14 脚本GameManager.cs(2) 第4章 游戏实现 图4-15 脚本GameManager.cs(3) 在这个脚本中,我们在Update函数内添加了鼠标操作更新了摄像机的移动,其他部分都用于处理UI文字的显示。文字显示部分,使用了 ...这样的标记,这可以使同一段文字产生不同的颜色变化。 现在运行游戏,按住鼠标左键移动即时改变摄像机的位置。 4.7 路点建设 但在塔防游戏中敌人通常不需要智能寻路,而是按照一条预设的路线行动。接下来我们将为敌人创建一条前进路线, 这条路线是预设的,敌人将从游戏场景的左侧沿右边道一直走到右侧。 路线是由若干个路点组成,首先为路点创建脚本PathNode.cs,如图4-16所示。 图4-16 脚本PathNode.cs 17 在游戏中,敌人将从一个路点到达另一个路点,即到达当前路点的子路点。在PathNode脚本中,主要是边过SetNext函数设置它的子路点。 创建一个空游戏体作为路点,指定PathNode.cs 脚本,并设置Tag为“pathnode” 沿着场景中的通道摆放路点,如图4-17所示。 图4-17 路点设置 接下来为每个路点设置于路点,为了设置方便,添加-个菜单功能,加速设置路点的操作。创建脚本PathTool.cs,它将提供一个自定义的菜单,帮助我们设置路点,代码如下图4-18所示。 图4-18 脚本PathTool.cs 第4章 游戏实现 这里的代码只有在编辑状态才能被执行,注意PathTool继承自ScriptableObject,并在展前面引用了UnityEditor。所有在这里使用的属性和函数均为static类型。 [MenuItem("PathTool/Set Parent %q")]属性将在菜单中添加名为PathTool的们定义菜单,并包括子菜单Set Parent,快捷键为Ctrl+q。柴单Set Parent执行的功能即是SetParent 函数中的功能,将当前选巾的节点作为父路点。 相应的SetNextChild函数将当前选中的路点作为父路点的子路点。 选中场景中的第一个路点,按快捷键Ctrl+q将其设为父路点,然后选择下一个路 点按Ctrl+w设为子路点,再按Ctrl+q 将它设为父路点,再选择子路点,反复这个操作,直到将所有路点设置完毕。 4.8 敌人 创建敌人的脚本Enemy.cs,如图4-19所示。 图4-19 脚本Enemy.cs 19 在这个脚本中,定义了敌人的一些基本属性,如生命值、移动速度、类型等,它有-个路点属性作为当前的出发点。在MoveTo函数中,敌人向当前路点的子节点前进,当距离子路点较近时,即将子路点作为当前路点,再向下一个路点前进。注意这里计算敌人与子路点的距离时没有计算Y 轴,因为我们希望空中的敌人飞到路点上方时即认为是到达该路点。当敌人走到最后的路点,即是到达我方基地,销毁自身,并使基地减少一点生命值。 将放置在预置里的模型放在通道中,并制定这个脚本到模型上,完成敌人的设置。运行时会如图4-20所示。 图4-20 模型指定 4.9 敌人生成器 塔防游戏的敌人通常是成批山砚,一波接着一波,因为敌人的数量众多,所以需要一个生成器按预先设置的顺序生成不同的敌人。为了提高工作效率,需要在Excel中设置每一波出现的敌人,然后将其导出为XML格式,敌人生成器将读取这个XML 文件,按其设置生成敌人。 首先要创建一个用于定义XML格式的数据源,使用任意文本编辑器输入如下文本,并存为template.xml,如图4-21。 第4章 游戏实现 图4-21 XML数据源 这是一个简单的XML文件,里面没有什么内容,但定义了我们需要的格式:wave表示第几波,enemyname是敌人的名字,这个名字简要在Unity中与敌人关联,level 表示敌人的等级,wait表示生成这个敌人需要等待的时间。 然后新建一个Excel文档,在其中添加文本,名称要与XML数据源一致。如图4-22所示。 图4-22 添加文本 在XML源中依次选择table下面的wave、enemyname、level、wait并拖曳至相应的文本表格中。如图4-23所示。 图4-23 完成映射 映射完成后,可以输入相应的数据,这样就能设置很多敌人。 4.10 防守单位 本游戏中唯一的一个防守单位是个箭塔,它的功能很简单,当敌人进入它的攻击范 21 围便会射箭。 创建防守单位的脚本Defender.cs,如图4-24所示。 图4-24 防守单位脚本Defender.cs 在这个脚本中,FindEnemy函数主要用于查找进入其攻击范围的敌人,然后在这些敌人中再选出一个生命值最低的敌人作为目标敌人。 Attack函数向敌人攻击,这里只是很简单地调用了敌人的SetDamage函数减少敌人的生命值。 当创建了一个防守单位后,它所处的单元格则被当前防守单位占据,不能再创建其他东西,因此残们在Start函数巾改变了防守单位所处单元格的属性。 然后为导入好的模型指定Defender.cs脚本就可以了。 4.11 生命条 敌人在受到攻击的时候,找们并不知道它受到了多少伤害,为了能够提示它的剩余生命值,需要为它制作一个生命条。在素材中,我准备好了一个平面模型,并附有一张贴图,贴图由简单的黄色和红色组成,我们将使用改变平面模型UV的方式,使黄色表 -25所示。 示剩余生命值,红色表示失去的生命,如图4 第4章 游戏实现 图4-25 生命条 创建脚本LifeBar.cs,如图4-26所示。 图4-26 生命条脚本LifeBar.cs 在这个脚本中,Ini函数负责初始化,主要是获取生命条模型的UV。在UpdateLife函数中,我们根据当前生命值和最大生命值计算出一个比例,然后调周Pad函数左右移动UV的位置,当生命值越低,黄色显示的越少,红色显示的越多。SetPosition 函数负宽设置生命条的位置, 因为生命条始终要伴随相应敌人的移动, 并出现在它的上方,所以这个函数设置了一个yoffset 参数,使生命条的位置向上偏移一定距离。 将LifeBar.cs 脚本指定给LifeBar.tbx 作为脚本组件,并将它制作为prefab文件。 在敌人的Inspector窗口将生命条的prefab与其关联。 然后再在Enemy.cs脚本中添加设置生命条随敌人移动,并实时更新生命条状态。 这样运行游戏时就会有生命条的减少了,如图4-27所示。 23 图4-27 生命条效果 4.12 自定义按钮 在塔防游戏中,防守单位都是动态创建的,通常游戏中将提供若干个按钮,当选中其中一个按钮后,这个按钮将保持激活状态,这时在场景中选择位置按下鼠标,即可创建一个防守单位,同时也会扣除一些用于创建防守单位的资金或点数。 接下来我们将创建一个自定义的按钮,虽然使用OnGUI 创建按钮更容易,但OnGUI 的效率较低,也不利于制作布局复杂或有特殊需求的UI, 更难为它制作动画。 创建脚本GUIButton.cs,如图4-28所示。 图4-28 脚本GUIButton.cs 第4章 游戏实现 在这个脚木中, Awake函数初始化了按钮的状态,按钮一共有三种状态,包括正常、高亮和激活。在UpdateState 函数中,判断是否选中按钮,如果选中,则运回按钮的ID。SetState 函数用来设置按钮的状态,实际上是在更新按钮的贴图。SetScale 函数用来设置按钮的缩放,在乎机平台,因为机器设备的分辨率不统一,所以在不同平台对按钮进行相应缩放是必要的。SetOnActiv函数会将按钮设为激活状态,当按钮处于这种状态,即使鼠标从战钮上移开,按钮的状态也不会改变。 然后在场景中新建一个贴图GUI Texture,然后指定这个脚本,在Button Skin中设置按钮的三种状态的贴图,然后将按钮Position设为0,将PixelInset的X和Y设为5,按钮就会出现在屏幕左下角的位置,如图4-29所示。 图4-29 建塔按钮 运行游戏,按一下屏幕上的按钮,然后在地面上点一下,即可创建一个防守单位。 这样,一个怪物进入防守单位攻击范围时,就会收到攻击,随即减少生命值,一款塔防游戏就做好了。 25 第5章 游戏测试 5.1 在Unity3D中运行测试 点击软件中的运行按钮,如图5-1所示。 图5-1 测试按钮 游戏在软件中测试运行,如图5-2所示。 图5-2 软件中测试 游戏能够正常运行,没有报错,测试成功。 5.2 PC端测试 点击File选择Build Settings出现打包菜单,如图5-3所示。 第5章 游戏测试 图5-3 打包选项 结合游戏之前准备的另外两个开始场景,就可以打包成一个完整的游戏了,先将其打包为PC游戏进行测试。 运行结果如图5-4所示。 图5-4 开始场景 27 开始画面,仅有一个进入键,点击中间人物形状的按钮,进入下一个场景,如图5-5所示。 -5 选择关卡场景 图5 第二场景中有4关选择,任意点击一关都会进入第三场景,如图5-6所示。 图5-6 游戏场景 游戏完美运行,PC端的测试成功。 第5章 游戏测试 5.3 Android平台测试 如PC端封装类似,点击file选项中的Build Settings,出现如图5-7窗口。 图5-7 平台选择 在选择了Android后,点击左下角的Switch Platform将当前开发平台转换成Android开发平台,然后点击Player Settings进行设置,如图5-8所示。 图5-8 设置名称 设置了名称和打包后的图标后,还需要进行其它设置。在Resolution and Presentation 中Default Orientation选项设置游戏在Android客户端中按横屏还是竖屏显示,由于本设计为横屏游戏,为了消除竖屏可能带来的问题,所以选择Landscape横屏显示。 29 在Other Settings中需要选择Android的系统版本,详细设置如图5-9。 图5-9 其它设置 设置完成后,点击Build,经过短时间的处理后,一个安卓Apk就打包完成。将其安装在Android测试机上,本测试机型号为:原道? N70双擎HD。安装后如图5-10所示。 图5-10 安装在测试机 第5章 游戏测试 打开游戏,出现游戏开始界面如图5-11。 图5-11 游戏开始 选择关卡如图5-12所示。 图5-12 选择关卡 选择第一关,进入游戏,画面如图5-13所示。 图5-13 游戏画面 31 5.4 测试结果 在Unity3D的Mono模拟器中运行结果,游戏可以正常流畅运行,界面简洁易懂,操作简单,且画面鲜艳。 在PC平台测试运行,游戏同样可以正常运行。 在Android平台上测试运行时,游戏出现较严重的卡顿、延迟现象,虽然游戏能够正常运行,但是体验较差。 总 结 总 结 一个基于Android塔防游戏的完成,也标志着毕业设计的工作到达尾声。在整个的设计制作过程中,我收获了许多,同时发现了一些问题,最后我将对今后的工作有更多的展望。 在设计开始之前,本人大致了解了简单的游戏项目开发,但是由于没有系统地学习脚本编写,所以在动手制作游戏过程中,经常卡在脚本的编写上。例如前面设计中的路点设置的脚本就成为开发中很大的一个难题。在查阅资料和视频之后,成功将一些问题解决,但是薄弱点依然存在。同学和老师在游戏的开发中给予了本人很大的帮助,推荐了一些有用的资料和教程,让游戏制作成功。 游戏虽然制作成功,但是存在着以下问题: 1. 界面不美观; 2. 游戏在Android平台测试中出现较严重的卡顿和延迟现象,说明游戏优化不足; 3. 关卡较为简单,模型和素材搭配不合理; 4. 功能上较为简单,可玩性不高。 Unity3D是一款非常强大的游戏开发软件,它有着强大的跨平台能力,在本设计的最后测试阶段中可以看出,同样一款游戏,仅仅因为封装类型不同,在PC平台和在Android平台可以无差别运行。这样一来,免去了游戏在不同平台之间移植的复杂工作,同时节约了开发成本。可以预料,在接下来的一段时间,Unity3D将成为游戏开发行业的热门工具。也就是说,学会运用这门工具,才能更好地在游戏开发行业发展。 在今后的工作中,本人将继续学习,此毕业设计的开发过程中遇到的一些问题和游戏本身存在的一些问题将是本人今后一段时间努力学习和工作的方向,同时,还将用心学好Unity3D这个工具。 33 致 谢 随着毕业设计的完成,我的大学生活也将结束。在这短短的几个月的时间里,让我学到了以前在书本上学不到的知识。让我度过了大学生活最为充实的一段时期,而且收获了理论和实践上的丰硕果实。 在做毕业设计的这段时间,我要感谢我的指导老师郝琨老师,她经常抽出宝贵的时间来询问毕业设计的情况。在这次毕业设计中她还指导了很多学生,任务非常繁重,但是她对每一项工作还是那么负责,对我耐心指导。从她负责指导我的毕业设计开始,就对我设计中的每一个环节都不遗余力的给于我帮助。在毕业设计的这段时间,她深厚的学术修养,严禁的治学态度,强烈的责任心和对学生的无私关怀,将令我收益终身。 同时,我还要感谢我的评阅老师王丽老师,她在为我辛苦评阅的过程中,给予了我很大的帮助,解决了一些非常重要的问题,并且为我的设计提出了许多建设性的意见。最后,我要感谢教导了我的所有老师们,他们在大学生活的几年中给我的无私帮助,我将终生难忘。在平时的学习生活中,各位老师不辞辛劳的工作,使我在许多方面都达到了一个较高的层次。给我以后的工作与生活都有着非常巨大的帮助。 参考文献 参考文献 [1] 孔令德.计算机图形学基础教程. 北京:清华大学出版社,2008:26-35 [2] 张茂军.虚拟现实系统[M](北京:科学出版社,2002:170-172 [3] 赵沁平.DVENET分布式虚拟环境[M].北京:科学出版社,2002:68-73 [4] Unity.Unity3D参考手册.Unity,2010:94-121 [5] 倪乐波;戚鹏;遇丽娜;王婧.Unity3d产品虚拟展示技术的研究与应用[J].数字技术与应 用,2010年09期:12-14 [6] 魏迎梅.虚拟环境中碰撞检测问题的研究:[D].长沙:中国人民解放军国防科学技术大 学,2000:23-45 [7] 高建洪等.VRML虚拟场景中实时交互动画的实现[J].苏州大学学报(工科版), 2008,(06): 36-38 [8] 张晓媛著.基于游戏引擎的机械动力仿真技术的研究与实现[J].传媒学子论 坛,2010 [9] 朱柱. 基于Unity3D的虚拟实验系统设计与应用研究[D]. 武汉:华中师范大学,2012. [10] 陈健松,徐从富,潘云鹤. 基于地形的三维场景绘制方法[J]. 计算机工程与应用, 2006,(08):31-33 [11] 童恒建. 三维数字景观中场景图的组织与绘制[J]. 测绘信息与工程,2005,(05):9-11 [12]Luke Ludwig,John Haurykiewicz. Collision checking analysis tool: discovering dynamic collisions in a modeling and simulation environment [J]. Int J Interact Des Manuf(2007):135-141 [13]Christer Erison. Real-Time Collision Detection [M]. CRC Press,2004,7-21 [14]Tanzi, Vito(Theory and policy:A comment on Dixie and on current tax theory[J](International Monetary and Fund Staff Paper (IMF), Vol.39, No.4, 1992: 957-966 [15]Rudiger Dorbusch(Policy making in the Open Economy[M](Oxford University Press Inc., 1993: 149 [16]Alao Martina(Some Economic Model of Fertility in Developing Countries and China’s Recent Comparative Demographic Experience[C](International Symposium on Population and Sustainable Development, Beijing, China, 1995: 27-29 35
本文档为【基于Android平台的塔防游戏设计论文】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_589748
暂无简介~
格式:doc
大小:577KB
软件:Word
页数:47
分类:
上传时间:2018-04-11
浏览量:91