Unity3D塔防游戏的设计与实现 毕业论文

上传人:QQ40****828 文档编号:398393 上传时间:2018-07-26 格式:DOC 页数:31 大小:3.14MB
返回 下载 相关 举报
Unity3D塔防游戏的设计与实现 毕业论文_第1页
第1页 / 共31页
Unity3D塔防游戏的设计与实现 毕业论文_第2页
第2页 / 共31页
Unity3D塔防游戏的设计与实现 毕业论文_第3页
第3页 / 共31页
点击查看更多>>
资源描述
I江海职业技术学院毕 业 设 计毕业设计题目: unity3D 塔防游戏的设计与实现 学 生 学 号: 141010155 学 生 姓 名: 踪训军 所在系 (部): 信息工程系 专 业 及班级: 计算机 1401 指 导 教 师: 谭程宏 完 成 日 期: 2017-02-10 II摘 要 游戏,目前已经是最大众化的娱乐之一。Unity 是这几年非常热门的一种开发引擎之一。它具有非常强力的跨平台能力,其中还包含了图形、音频、物理系统、网络等多方面的引擎支持,是一个 2D、3D 游戏引擎套件和游戏开发工具,并且有一个非常强大的编辑器来整合这一切,因此被广大游戏开发者所喜爱。本次毕业设计,围绕手机游戏开发的实现,利用 Unity3D 游戏开发工具,基于 C#语言编写,开发制作一款手机游戏塔防游戏突破重围 ,并对项目需求及游戏的设计和具体实现进行分析。关键词 塔防,手机游戏,Unity3D,Android III目录第 1 章 绪论 .51.1 论文结构安排 51.2 市场需求分析 61.3 项目的简介 6第 2 章 unity3D 介绍 .621 Unity3D 总体概述 622 Unity3D 软件特色 7第 3 章 游戏概要设计 .83.1 整体游戏需求 .83.2 游戏截图 .93.3 设计概要 .103.4 游戏类图 113.5 游戏流程图 123.6 游戏主要功能设计 133.6.1 开场插画 133.6.2 选关界面的效果 133.6.3 模型动画的切换 133.6.4 敌人的 AI 实现 153.6.5 释放技能特效的实现 173.6.6 主角的行走路线 173.6.7 游戏中的碰撞检测 18第 4 章 游戏具体实现 .184.1 程序实现 194.1.1 Emnimy.194.1.2 Player.204.1.3 GameControl.21IV4.1.4 Level.224.1.5 MainMenu.234.1.6 Moneydate.234.1.7 SkillData.244.1.8 SkillManger.25第 5 章 结 论 .28参考文献 .29致 谢 .305第 1 章 绪论1.1论文结构安排 1。1 节可以放在绪论的最后本论文共有五章。结构安排如下:第一章:对游戏开发架构的背景,及项目和对市场的需求分析进行了简要介绍。第二章:unity3D 介绍第三章:突破重围游戏的概要设计和游戏主要功能设计的简介。第四章:突破重围游戏类的详细实现,对游戏架构中各个部分涉及到的相关知识进行介绍,然后给出设计的思路,最后给出具体实现。第五章:总结本次游戏的实现过程。这个和你上面的目录对吗?1.2 市场需求分析 与意义90 年代初国外的 3D 游戏开始起步,第一部 3D 第一人称射击游戏是美国的卡马克的重返德军总部 ,最早 3D 游戏引擎由其开发的 Doom 引擎。国内 3D 游戏始于 2003 年,首款自主研发,目前,国内有了很多的研究在 3D 游戏上,但是由于国内 3D 技术起步较晚,技术方面想比外国还是有不小差距,从设计理念到开发制作,国内能有自主研发的3D 游戏引擎的,只有屈指可数的互联网公司,大部分游戏公司和游戏开发者还在用国外大型游戏公司所开发的游戏引擎,如 Unity3D,虚幻,寒霜。虽然国内今年出现许多优秀的游戏团队和游戏公司,开发了数款质量较高的 3D 游戏,例如古剑奇谭系列, 仙剑奇侠传系列等,但是比起模拟人生 , 魔兽世界 , 战地系列等国际游戏大作仍有不可逾越的差距,这也使得国内玩家的财富大量流向国外。 随着移动设备的硬件日益强大,如手机的硬件相比于 10 年前电脑的配置还要强大,这样使用者在使用的时候,就会有大量应用的需求,目前来说,有两种主流的手机操作系统:Android 和 IOS,这两种操6作系统之所以成为主流,就是因为庞大的系统应用在背后支持,所以,应用的开发在手机系统的竞争中尤为重要。然而应用的跨平台移植会带来大量的问题,例如开发语言不同,移植代价太高等,但是,国外开发的一款游戏引擎完美地解决了跨平台开发难的问题,那就是 Unity3D 引擎,虚拟机技术被运用到 Unity3D 中,独立于平台执行的游戏编译结果。对于 3D 引擎的研究,在国内还处于起步阶段,所以我们认真研究国外的优秀游戏引擎,对将来自主开发 3D 游戏引擎有巨大的帮助。 。随着移动智能设备的快速普及,先后有 BAT 等互联网巨头的加入与 PC 端游厂商的转型或设立移动游戏研发部门,进军移动游戏市场,争先恐后来分这块大蛋糕,可说现阶段国内移动游戏市场竞争十分激烈,正处于一片红海,然而 2017 年对移动游戏市场来说也正是进入黄金时代的开始。这块你全面复制粘贴了?自己精简一下,突出引用 Unity3D 的意义与优势。1.3项目的简介本论文主要构思为 2D 类塔防游戏,传统的塔防都是电脑按照一条既定的路线进攻,玩家也只是单纯防守的模式,而本论文设计开发的这款游戏则是电脑防守、玩家进攻的模式。同时,玩家有大量新技能可以使用,下面的,你自己在组织下自己的语言, 参照语文的语句标准。操作方式也参照其他流行游戏,例如天天过马路那种简单操作的设计理念,玩家只要点击手机屏幕就可以控制。游戏的平台为安卓。通过 Unity3D游戏开发工具以及 NGUI 插件工具,基本上实现了整个游戏的制作。利用 C#语言和 Mono Development 编译工具,编写各个脚本代码,让游戏的各项操作跟游戏中的碰撞效果、NGUI 界面、粒子特效都得以实现。7第 2 章 unity3D 介绍1.2 Unity3D的介绍121 Unity3D 总体概述Unity3D 是由丹麦 Unity 公司开发的游戏设计开发工具,拥有强大的跨平台发布能力,支持多种语言编辑,可开发运行在 PC、Mac OS、PS3、XBox360、Wii、IOS、Android 等平台,也可利用 Unity Web player插件发布网页游戏,以及支持开发线上游戏(网络游戏) ,是一个全面整合的专业游戏引擎。Unity3D 提供了容易上手的操作界面,支持 PhysX 物理引擎、粒子系统等,降低了游戏开发的门槛,缩短了游戏开发的时间以及制作成本。Unity 简单直观的设计界面、高度的兼容性,使得游戏设计开发者能高效地完成工作。因此,Unity 成了目前国内很多游戏开发者和 VR 开发者的首选工具之一。分层次写122 Unity3D 软件特色写这些特色前要先综合一小段。你写的 Unity 3D 的特点,不要写本游戏中用到的啥啥的,如果真要写,可以放到后面第三章等。综合编辑:通过 Unity 简单的用户界面,用户可以完成任何工作,这些为用户节省了大量的时间。在本论文中的游戏编程过程中,可以整体对每一个界面进行编辑,节约了一个一个打开每个界面的时间,并且程序可以在界面中共享,节约了大量的相同程序重复编辑使用的时间,提高了整体的效率。 资源导入:Unity 支持所有主要文件格式,并能和大部分相关应用程序协同工作。本游戏中使用的 JPEG 格式的图片可以尽数导入 Unity3D 中进行编辑,对于游戏的整体实现十分有利。一键部署:Unity 可以让作品在多平台呈现。利用 File 选项中的Build Setting 功能,可以选择平台来发布游戏,可供选择的方案十分齐全,8完成的作品可以发布到 Windows、Android、IOS 平台等,对于本次毕业设计的要求发布到移动平台上,Unity3D 更是可以完全满足需求。 iPhone 以及 Android 发布:Unity 让革命性的游戏开发降临革命性的设备。这正是我们这次毕业设计的核心,移动平台的发布可以满足更多群体的需求,这也是为什么采用 Unity3D 作为本次毕业设计核心软件的原因。 音频和视频:实时三维图形混合音频流、视频流。在本游戏中,我在主界面内添加了声音控件,以达到使本游戏更具吸引力的效果。 脚本:Unity 支持 3 种脚本语言:JavaScript,C#,Boo。本次游戏的设计,编程主要使用到了 C#语言,Unity3D 对于 C#语言的支持使得程序的制作者可以尽可能地完成所需功能的设计以及实现。 Unity 资源服务器:Unity 资源服务器是一个附加的包括版本控制的产品。文档:Unity 可以提供逐步的指导、文档和实例方案。在编辑过程中遇到问题时,可以对所需知识寻求帮助,这一点对本次毕业设计帮助很大。因为本身对于 Unity3D 这款软件的认识有限,所以当有指导、文档和实例方案作为参考后,编程的过程更轻松了,通过借鉴 Unity3D 自带的实例能找到可以触类旁通的编程设计方法。 拖动操作:Unity3D 软件中大部分的操作都可用拖动操作来实现,使Unity3D 包、模型、字体、图片等资源的导入步骤变得非常简单,只需要将资源拖入到相应的位置便可以实现导入,简化了操作,节约了时间,提高了开发的效率。第 3 章 游戏概要设计3.1 整体游戏设计先要描写你游戏的情节,让不懂的人看了就明白。突破重围游戏是基于安卓平台的一款手机游戏,主要完成游戏功能如下:这句话别扭吗?1、 敌人的 AI敌人一共有 4 个状态:观望状态、巡逻状态、攻击状态、死亡状态,每个状9态间的转化都是用 UNITY 里的 Animation 系统的状态机去改变。2、 玩家的技能玩家一个有 8 个技能:疾跑、坚韧、隐身、命运、治疗、伪装、先发制人、赌博,每个技能在每个关卡只能使用一次。3、 玩家的移动为了简化玩家的操作,所以只要触摸屏幕就可以实现移动。4、 各个 UI 界面的实现游戏的 UI 界面有:开场插画界面、主界面、设置界面、选关界面、加载界面、失败界面。3 . 2 游戏截图下面这些图片务必要跟在你的某一个段下面,你自己可以看看别人的论文样式!图 2-1 游戏开场动画界面10图 2-2 游戏主界面画面图 2-3 游戏选关画面图 2-4 loading 界面11图 2-5 游戏画面3.3 设计概要 就是故事描述吗?如果是,请按我的要求和上面合并在主场景(主画面)中,有 4 个按钮,分别是开始游戏、继续游戏、游戏说明、退出游戏,通过“开始游戏”按钮进入选关界面,按下按钮选择关卡后进入相应的场景中,通过“继续游戏”可以进入之前的关卡, “游戏说明”界面是介绍游戏的操作方法,在场景中按下“返回键”返回主菜单。在各个难度场景中,进入场景前,会让玩家先选这一关的技能,每个技能在每个关卡中只能使用一次;技能的使用要花费水晶,玩家的水晶来自于场景收集或者通过关卡后的水晶奖励(过关得到的水晶量跟游戏时间成反比、跟玩家过关血量成正比) 。玩家作为一名逃亡者,有着自己本身的血量,各种敌人有着自己的 AI,当他们没有发现目标的时候,他们会在各自的领域巡逻。每个敌人都有一个巡逻盲区,玩家可以利用这些盲区来躲避敌人。当玩家进入敌人视野内,敌人会开火攻击玩家,当玩家血量减少到小于或者等于零的时候,玩家死亡,游戏结束;场景中会有一个发光点,只要玩家安全到达这个发光点,即算胜利,游戏过关,解锁下一个关卡。123.4游戏类图 游戏类图是什么东西?图 3-1 游戏类图mainmenu 类是游戏的界面管理类,实现游戏中界面的功能。而 Loading 类是游戏的加载类,使游戏能在玩家进入关卡前先加载。游戏中除了 mainmenu 类跟 loading 类 2 个类是单体类之外,其他类都有依赖关系。其中,Skilldate类和 Emnimy 类、Player 类都依赖于 SkillManger 类,因为在 SkillManger 类中,要实现各种技能的作用,而技能涉及到的不仅是玩家,还有敌人,所以这2 个类都跟 SkillManger 有依赖关系。至于 Skilldate 类,是用于表示每个技能的数据,所以也是依赖于 SkillManger 类。而 SkillManger 类与 MoneyData类则依赖于 GameControl 类,游戏管理类是管理游戏的一个类,敌人的所有行为都在敌人类中完成,而玩家的大部分行为也在玩家类中完成,所以游戏管理类要做的就是及时存储游戏中产生的数据,以便以后需要的时候可以使用;还有就是管理玩家技能,在游戏开始时候,记录玩家选择的技能还有初始化玩家选择的技能。3.5 游戏流程图 你这个流程图不应该是在你设计的最前面吗?而且莫名其妙一张图,什么承上启下的东西也没有?这是论文, 不是数学13图 3-2 游戏流程图143.5游戏主要功能设计 ?3.6.1 开场插画现在很多游戏,特别是手机游戏都喜欢用插画来代替游戏一开始的开场动画,所以突破重围游戏中也是用插画作为游戏的开场动画。先导进一个一个 UNITY 的资源包叫做 LeanTween,这个可以更好地实现简单动画的效果,例如平移、缩放。接着把准备做插画的若干张资源图放进同一个物体进行管理,然后给这个物体加碰撞盒,每次点击这个碰撞盒,都会移动一定的距离。具体的操作如下:定义一个存放管理所有图片的空物体 Item;然后给这个 Item 通过 UIEventListener 挂钩上点击函数在点击函数里面实现的就是用 LeanTween.moveLocalX 移动这个物体3.6.2 选关界面的效果界面主要是用 NGUI 里面的 UIToggle 组件以及 Drag Scolleview,当关卡选中的情况下,通过 OnTriggerEnter 改变原图的大小来实现。3.6.3 模型动画的切换模型动画根据自己的需要先切割成自己想要的动画,然后逐段给动画起个名字,代码控制部分如下:定义一个共有变量 Emnimy_Animation 类型是 Animation;因为需要多次用到动画的切换,所以在这里把动画的切换写成一个方法,以便使用。public void SetEmnimyAnimation(动画的名字,类型是 string)Emnimy_Animation.CrossFade(动画的名字);15调用这个方法的时候只要你传进一个 string 类型的参数,这个参数必须是某段动画的名字,模型就会自动播放相对应的动画。3.6.4 敌人的 AI 实现 敌人的 AI 是该游戏的重点之一,AI 的实现是用协程去完成的,具体的伪代码如下:定义一个结构体 emnimy 里面包含敌人的所有状态有 Think, run, Attack, Die 4 种。定义 4 种状态的协程函数 IEnumerator Attack(),IEnumerator SeeAround(),IEnumerator Move(),IEnumerator Die();public IEnumerator Attack()改变敌人状态为 Attackwhile (true)if(如果玩家不在攻击范围内)yield return 0;If(如果玩家没有在敌人视野内)改变敌人状态为思考yield return StartCoroutine(GameStart();播放攻击动画设置敌人的朝向朝着玩家玩家扣血yield return 0;16public IEnumerator SeeAround()播放站立动画随机一个数用来当做敌人的朝向Quaternion.Slerp 让敌人平缓从当前朝向转到随机方向;yield return new WaitForSeconds(2);public IEnumerator Move()播放奔跑动画设置奔跑的方向调用 Quaternion.LookRotation(下一个节点的位置 当前位置)得到下个位置的朝向;Quaternion.Slerp 让敌人平缓从当前朝向转到下个朝向;敌人移动调用 transform.Translate 给敌人一个速度;状态改变为 Runyield return 0;public IEnumerator Die()播放死亡动画调用 Destroy 销毁敌人状态改变为 Die;yield return 0;这 4 个协程的开关,都是在 GameStart 函数实现,具体如下:public IEnumerator GameStart ()17while (true)if (达到攻击条件)关闭其他所有协程 StopAllCoroutines();yield return StartCoroutine(Attack();if (敌人状态为 Think)yield return StartCoroutine(SeeAround();if (敌人状态为 Die)yield return StartCoroutine(Die();yield return new WaitForSeconds(2.0f);yield return StartCoroutine(Move();3.6.5 释放技能特效的实现技能的特效本身是用 UNITY 的粒子系统完成的,把特效做成一个预设体,以便多次使用。特效要在主角的身上释放,所以当需要特效的话,先Instantiate 出特效,然后获取主角的位置,给特效的位置赋值,最后因为特效只是一瞬间出现,所以在产生特效的同时,就要给他加一个定时的destroy,让他产生后会自动 destroy 吊,节省内存。3.6.6 主角的行走路线主角是按一定的路线行走,首先要把所有的拐弯点都先放置一个带有碰撞18盒的空物体,把这些空物体放在一个链表管理,然后给玩家一个速度,每次当玩家需要改变朝向的时候,都先去路点链表里面找下个路点,改变朝向后,下个路点在链表的位置要加一。3.6.7 游戏中的碰撞检测在 unity3d 中,能检测碰撞发生的方式有两种,一种是利用碰撞器,另一种则是利用触发器,这两种方式的应用非常广泛。为了完整地了解这两种方式,我们必须理解以下概念:碰撞器是一群组件,它包含了很多种类,比如:Box Collider、Capsule Collider 等,这些碰撞器应用的场合不同,但都必须加到 GameObjecet 身上。所谓触发器,只需要在检视面板中的碰撞器组件中勾选 IsTrigger 属性选择框。在 Unity3d 中,主要有以下接口函数来处理这两种碰撞检测:触发信息检测:1.MonoBehaviour.OnTriggerEnter( Collider other )当进入触发器2.MonoBehaviour.OnTriggerExit( Collider other )当退出触发器3.MonoBehaviour.OnTriggerStay( Collider other )当逗留触发器碰撞信息检测:1.MonoBehaviour.OnCollisionEnter( Collision collisionInfo ) 当进入碰撞器2.MonoBehaviour.OnCollisionExit( Collision collisionInfo ) 当退出碰撞器3.MonoBehaviour.OnCollisionStay( Collision collisionInfo ) 当逗留碰撞器第 4 章 游戏具体实现你第三章里面不就是程序的设计吗?你游戏具体实现,最后不就是19通过代码完成吗?我不明白你的逻辑,请你整理好了,让我能看懂再说。4.1程序实现 程序实现,按我理解应该是具体的程序代码吧。你下面的是不是 Unity中的 C#中函数的功能?如果不清楚,你真的可以参考下其他人的论文格式!4.1.1 Emnimy描述:这个是一个敌人的类,该类里面包含着敌人的所有行为,通关有限状态机去控制敌人的行为变化。类的设计图 4-1 Emnimy 类的实现类的解析:该类主要通过有限状态机,定义敌人的所有行为,通过开协程的方式去控制敌人的状态转化,实现敌人的 AI。public enum emnimyThink,20run,Attack,Die敌人的移动是先定义好位置,把定义好的位置存在一个链表里面,通过读取链表里面的下一个节点进行移动。敌人的攻击状态是先判断玩家是否进入攻击范围内,UNITY 自带一个函数 Physics.OverlapSphere 可以检测一定范围内是否有碰撞体玩家进入一定距离的攻击范围内,视野的判断是用矩阵的点乘来计算,如果玩家位置与敌人位置的点乘是正数,则说明玩家是在敌人的面前,即玩家已经进入了视野范围;如果是负数,则不在视野范围内。通过以上 2 个办法,敌人可以自动判断出是否进行攻击。敌人的死亡则是直接调用 UNITY 的destroy 函数。敌人的动画设置是通过 UNITY 自带的 Animator 动画系统。4.1.2 Player描述:玩家类,相对于敌人类,玩家类的设计比较简单,没有复杂的 AI,也不用攻击,玩家类主要就是实现玩家的行走、人物的属性设置、包裹血量、护甲和移动速度。类的设计21图 4-2 Player 类的实现类的解析:该类主要设计了多个接口,包括有人物血量的接口、护甲的接口、速度的接口,方便调用。玩家受伤的伤害是通过 SetDamage 去实现,因为游戏中有很多关卡,所以为了设计为每个关卡敌人的攻击力不同,所以在玩家类里面,设计了一个方法叫 GetHurt,这个方法是用来获取玩家受伤的类型,一共有 3 种,MG 伤害是 1,Rocket 伤害是 2, Tower 伤害是 4。4.1.3 GameControl描述:游戏控制类,主要是负责进入游戏界面后的一切操作。类的设计22图 4-3 GameControl 类的实现类的解析:这个类主要是用于进入游戏后的操作,例如游戏开始时的选择技能,如果水晶不足购买技能的话,就会弹出对话框提示玩家,游戏中有游戏界面的按钮事件,可以通过委托,把按钮的处理事件挂在按钮上面。其中技能图标的产生可以用 Instantiate 的方法。选择技能的时候,首先定义一个链表,把全部技能都放进这个链表里面,判断是否选择这个技能,则是在链表里面判断所有元素,通过判断元素本身的 checkmark 的透明度是不是为 1 来确定到底有没有选择该技能,然后再定义一个链表,用于存储选择的技能。上面说到委托,因为委托在游戏中被大量运用,并且在 C#里也非常重要,所以在这里简单介绍一下委托。委托是一个可以引用方法的对象,当创建一个委托,也就创建一个引用方法的对象,进而就可以调用那个方法,即委托可以调用它所指的方法。委托的好处是拓展性强。4.1.4 Level描述:主要是负责判断游戏是否通关。如果确定游戏通关,就进行游戏的结算。类的设计23图 4-4 Level 类的实现类的解析:在游戏中,每一关都有一个目的地,如何找到玩家是否来到目的地,就要通关 UNITY 里面的触发器,给目的地添加触发器。该类实现的是当玩家触发触发器的时候,游戏应该处理的事件,例如出现结算界面、系统自动结算、数据的保存,OnTriggerEnter 函数就是 UNITY 的系统触发函数。上面提到了触发器,与之对应的还有 UNITY 的碰撞器,二者非常相似,但还是有所不同。碰撞器碰撞的条件必须是碰撞物体有一方必须有刚体,而触发器则只需勾选碰撞盒上的 Is Trigger 属性就可以,而且二者调用的函数也不同。4.1.5 MainMenu描述:界面类,主要负责游戏界面的管理类的设计24图 4-5 MainMenu 类的实现类的解析:游戏中所有 UI 都是用 UNITY 插件 NGUI 实现的,所以该类需要实现的有游戏的音乐控制、按钮的挂钩事件,然后通过委托,让游戏中的界面的按钮实现功能。UNITY 中界面一般都是用 NGUI 去实现,因为自带的 GUI 系统,效率太低,它是类似于 Update 函数,每一帧都要去执行的。4.1.6 Moneydate描述:数据的保存类,游戏中一般有 3 种数据保存方式,保存为 XML 文件、保存为 TXT 文件以及保存为永久化数据,该类中主要就是保存为永久化数据。类的设计25图 4-6 MoneyData 类的实现类的解析这是一个单独的类,主要是保存游戏中产生的数据。在突破重围这个游戏中,主要需要保存的数据有 2 个:一个是当前关卡的保存,方便继续游戏的进度;另外一个是游戏中钱的保存。游戏中用到的保存利用是 PlayerPrefs类,把需要保存的数据保存为永久化数据。当下次进入游戏的时候,判断数据是否有保存,有就读取数据。4.1.7 SkillData描述:技能的数据类,用来辨别不同的技能,不同的技能对应的数据都是不一样的。类的设计26图 4-7 SkillData 类的实现类的解析该类中,为了辨别不同的技能,定义了不同的 ID、不同的技能花费,不同的技能有不同的执行函数,通过传 ID 告诉 SkillManger 类,实现出不同的技能。4.1.8 SkillManger描述:技能管理类,主要是负责实现各种技能以及技能的特效。游戏中一共有 8 个技能,每一个技能都有独自的 ID。这个类的目的就是根据不同的 ID来显示不同的信息。技能信息如下:疾跑:提高英雄 2 倍的速度,持续 5 秒坚韧:提高英雄的护甲,减伤 50%,持续 5 秒隐身:英雄进入隐身状态,持续 3 秒命运:杀死敌人任意一名守卫(系统随机选定)治疗:恢复英雄 20%的血量伪装:英雄伪装成敌人的样子,(转出的点数小于 7)75%的机会可以骗过守27卫,持续 3 秒先发制人:英雄可以击杀一名距离自己最近的守卫赌博:赌博行为,不建议选择!(转出点数大于 4)50%杀死一名守卫,50%减少一半血类的设计图 4-8 SkillManger 类的实现类的解析:这个类中,所有的技能实现都是在这个类里面:疾跑技能的实现:通过调用人物类中的设置速度的方法实现;坚韧技能的实现:通过调用人物类中的设置护甲的方法实现;隐身技能的实现:通过调用人物类中的设置是否隐身的变量实现;命运技能的实现:把所有敌人都放进一个链表里面,然后随机一个数,随机到的数作为链表的下标,然后把这个元素的 Isdead 属性设置为 true,再从链表移除这个元素;治疗技能的实现:通过调用人物类中的设置 HP 的方法实现;伪装技能的实现:概率问题,显示一个转盘,当转出来的数字小于 6,则用人物类中的 IsHide 的属性实现;28先发制人技能的实现:用 for 遍历所有敌人,计算当前所有敌人与自己的距离,然后把这一组数据放进一个链表里面,再用一个字典存储这些数据,然后对链表进行 sort 排序,字典中的链表下标为 0 的就是距离最近的。然后把这个元素的 Isdead 属性设置为 true,再从字典移除这个元素;赌博技能的实现:概率问题,显示转盘,如果转盘的数字大于 4,则把敌人链表里面的一个元素移除;如果小于 4,则调用人物类中的设置 HP 的方法实现人物血量减半的效果。29第 5 章 结 论 小结而不是结论,你能得出什么结论?移动设备硬件的飞速发展,以及移动端游戏的开发与发展,使得手机游戏成为许多人日常生活中不可缺少的一部分,已经渐渐融入人们的生活。数字游戏技术已经从二维发展到三维,从单纯的单机游戏发展到多人在线的网络游戏。如今各式各样的手机游戏冲击着我们的视觉,而智能手机、平板电脑以及其他移动设备的普及和发展,更为手机游戏提供了新的发展机遇,在这些终端上体验游戏带来的乐趣俨然已经成为了一种极具代表性的娱乐模式。本文以突破重围游戏的游戏开发为背景,探究基于 Unity3D 的游戏设计与实现,从游戏的设计阶段到游戏的开发阶段,一步一步慢慢深入去完成。小结应该写什么的?优缺点!30参考文献1 金玺曾. Unity3D手机游戏开发. 清华大学出版社M. 2013 年 8 月2 宣雨松. Unity3 游戏开发M. 人民邮电出版社3 NGUI 示例视频教学Z. http:/game.ceeger.com/forum/read.php?tid=1596&fid=16. 第 1-3 个视频. 2012 年 5 月4 NGUI 官方示例Zhttp:/www.tasharen.com/UI Scroll View 讲解. 2013 年 11 月6 洪洲,蔡木生,罗林. 计算机高级语言程序设计:C+ M. 北京:冶金工业出版社,2007
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸设计 > 毕设全套


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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