基于Unity3D的塔防游戏的研究与实现
- 格式:docx
- 大小:5.95 MB
- 文档页数:49
本科毕业设计(论文) 基于Unity3D的塔防游戏的研究与实现
Research and Implementation of Tower Defense Game Based on Unity3D
毕业设计(论文)原创性声明
本人郑重声明:所呈交的毕业设计(论文),是本人在指导老师的指导下,独立进行的设计(研究)工作及取得的成果,论文中引用他人的文献、数据、图件、资料均已明确标注出,论文中的结论和结果为本人独立完成,不包含他人已经发表或撰写的作品及成果。
对本文的研究作出贡献的个人和集体,均已在论文中作了明确的说明。
本人完全意识到本声明的法律结果由本人承担。
毕业论文作者(签字):签字日期:年月日
成绩评定
注:毕业设计(论文)成绩按百分制评定。
答辩成绩不及格的(评分低于60分的),则该毕业设计(论文)总评成绩为答辩成绩。
摘要
21世纪20年代,游戏已经成为了大众经常选择的娱乐方式。
其中,Unity3D作为时下热门的游戏开发引擎,不仅功能完善易上手,还可以免费使用成本低,理所当然的被许多游戏开发者所使用。
Unity3D作为一款全面整合的专业游戏引擎,可以让开发者轻轻松松的去创建3D游戏、建筑可视化、实时3D动画等功能,其优秀的跨平台性使得Unity3D可以运行在包括但不只含于Windows、Android 和Mac等平台。
本次的毕业设计,将实现windows平台游戏的开发,使用Unity3D 游戏开发工具,编写代码为C#语言,开发制作一款名为《方块防线》3D塔防游戏,并在制作的过程中将对项目的需求、游戏的设计和具体的实习方法进行分析。
关键词:塔防3D游戏Unity3D Windows平台
Abstract
In the 2020s, games have become a popular entertainment method. Among them, Unity3D, as a popular game development engine, not only has perfect functions and easy to use, but also can be used for free and with low cost. Of course, it is used by many game developers. As a fully integrated professional game engine, Unity3D allows developers to easily create 3D games, architectural visualization, real-time 3D animation and other functions. Its excellent cross-platformity allows Unity3D to run on but not only on Windows , Android and Mac platforms.
This graduation project will realize the development of windows platform games. Use Unity3D game development tools, write code for C # language, develop and produce a 3D tower defense game called "Cube Tower Defense", and in the process of making Analysis of project requirements, game design and specific internship methods.
Key Words:Tower defense;3D games;Unity3D;Windows platform
目录
第1章绪论 (1)
1.1引言 (1)
1.2Unity3D介绍 (1)
1.3 C#脚本语言介绍 (2)
1.4市场分析与意义 (2)
1.5项目的简介 (3)
第2章Unity3D界面及基本操作 (3)
2.1 Unity3D的界面 (3)
2.2Unity3D的基本操作 (6)
2.2.1 Unity3D菜单栏 (6)
2.2.2 Unity3D工具栏 (7)
2.2.3 Unity3D常用快捷键 (7)
第3章游戏策划 (7)
3.1游戏的简要介绍 (7)
3.2背景与情节 (8)
3.3游戏的炮塔、怪物和场景的素材与设计 (8)
3.3.1炮塔的设计 (8)
3.3.2怪物的设计 (9)
3.3.3游戏场景设计 (10)
3.4 游戏操作方法 (11)
第4章游戏的设计与实现 (11)
4.1 准备游戏工程 (11)
4.2地图的设计 (13)
4.3模型和材质的导入 (15)
4.4怪物及其脚本设计 (15)
4.4.1怪物的移动 (15)
4.4.2怪物的生成 (17)
4.4.3怪物的死亡 (19)
4.5炮塔及其脚本设计 (20)
4.5.1炮塔的建造 (20)
4.5.2炮塔的升级与拆除 (25)
4.5.3炮塔的攻击 (28)
4.5.4炮弹的生成及其功能 (30)
4.5.5玩家视野的移动 (31)
4.5.6玩家的失败和胜利条件 (32)
4.6 UI界面的设计 (33)
4.6.1炮塔的选择UI (33)
4.6.2炮塔的升级与拆除UI (33)
4.6.3怪物的血条 (34)
4.6.4金钱的显示与更新 (35)
4.6.5游戏胜利与失败的界面 (35)
4.7游戏开始场景的设计 (36)
4.8游戏测试和试玩 (37)
4.8.1游戏的打包 (37)
4.8.2游戏的最终成果 (38)
第5章总结与展望 (39)
参考文献 (40)
致谢 (41)
第1章绪论
1.1引言
游戏,最早出现记录的游戏是一款电子游戏,其为一款井字棋游戏,需要在真空管计算机上运行。
1970年,电子游戏作为一种商业娱乐媒体被引入日本、美国、欧洲,使其成为了娱乐工业的重要基础,并在1983年的美国游戏业萧条事件及继而重生后的两年中,得到了飞速的成长,继而成为了除电影业外最获利的娱乐产业。
随着计算机的发展、个人电脑的新陈换代,游戏的分类也多了起来,3D游戏作为新兴的一大板块,随着第一款3D游戏《夜晚驾驶者》的诞生,也随之被大众所知,从而蓬勃发展。
Unity3D、虚幻、Gamebryo作为近代游戏开发者常用的游戏开发引擎,出自其中的游戏数不胜数,比如国内耳熟能详的《古剑奇谭》系列、《仙剑奇侠传》系列,又比如国外的《刺客信条》系列、《绝地求生:大逃杀》等。
1.2 Unity3D介绍
1.2.1 Unity3D简介
Unity3D也简称Unity,是由Unity Technologies公司开发的一个全面整合的综合型游戏开发工具。
有着多个优秀的特点:智能界面设计、专业的物理引擎、友好的开发工具、多种实用系统、优秀的渲染引擎、可视化的脚本语言u、可观的市场空间、方便的分享社区和支持多种格式导入资源。
Unity的中文意思为“团结”,Unity公司提出的口号为“大众游戏开发”(Democratizing Development)意在告诉我们任何人都可以去学习并且制作游戏,也是告诉我们游戏的开发需要团队的合作与配合。
1.2.2 Unity3D的特色
①智能的界面设计:可视化的模式让使用者轻松使用,而提供直观的图形化程序接口可以让开发者实现边玩边开发游戏,还可以实时修改游戏内容。
②专业的物理引擎:支持NVIDIA PhysX物理引擎,可模拟多种物理效果,使人物的动作和互动更加逼真,其视觉效果更加突出,逼真、高度互动的特性将让你的游戏体验更加完美。
③友好的开发工具:包含GPU事件探查器、音频处理API等,脚本编辑支持C#、JavaScript、Boo三种脚本语言。
④多种实用系统:灯光照明系统、路径寻找与人群仿真系统、粒子系统、地
形编辑器、Team License协同开发系统等,可以使得开发者更加方便快效的制作游戏。
⑤优秀的渲染引擎:渲染底层支持DirectX和OpenGL,为大型游戏的制作提供基础。
⑥可视化的脚本语言u:实现了强大且方便的人机交互功能。
⑦可观的市场空间:其跨平台的特性,使得Unity可在Windows、Android、iOS等多种平台上占据一定市场空间。
⑧方便的分享社区:Unity的社区中有着许多可以的素材、资源、教程,可以下载学习使用,也可以分享自己的经验,一起互相学习。
⑨支持多种格式导入资源:整合多种DCC文件格式,包含3dsMax,Maya,Lightwave,Collade等文档,可直接拖拽到Unity中。
1.3 C#脚本语言介绍
本次游戏开发使用的是Unity支持的3种脚本编程语言中的C#脚本语言
C#是一种最新的、面向对象的编程语言,读作"C sharp"。
C#是由C和C++衍生出来的,并且具有安全、稳定、简单的特点,可快速地编写各种基于平台的应用程序。
1.4市场分析与意义
Unity3D作为主流游戏引擎中最为容易上手的引擎,并且可以免费使用其中个人版和社区版,Unity3D中很多功能都是成体系的,比如物理效果、碰撞检测、自动寻路、场景搭建,熟悉操作代码之后就可以自主开发游戏,Unity3D优秀的跨平台性更是让我们可以不局限仅仅Android平台或者仅仅Windows平台,还有着Unity平台上丰富的插件,物件碎裂的特效、场景破坏和变形的特效等等,都可以在Unity的插件中找到对应功能的插件,使得开发者更加方便快速的开发出更好的游戏作品。
近代,虽然随着休闲时间碎片化、智能手机普及率提高,可以方便游玩的手机游戏的市场规模有着明显的巨大增长,但是电脑作为游戏行业争斗最为持久激烈的战场,个人游戏开发者和游戏公司也在近几年游戏的发展中,开发技术渐渐的成熟,3D游戏的开发技术更加成熟,pc(Personal Computer)端游戏的市场已然进入了成熟期,而W indows系统作为个人电脑中最为普遍安装的系统,运行于Windows平台的游戏数量更是如汪海一般,用户一般也是游戏爱好者,随着游戏的发展,人们对于游戏产品将更加强调画面精致、玩法硬核、精品化,质量成为
竞争的核心,市场呈现出了“少而精”的特征,其中视觉上表现力更丰富、代入感更强的3D游戏更是如此。
行业内部竞争的日益激烈,再加上手机游戏市场的冲击,使得表现出色的老品牌游戏的支持度和市场份额更高、支持率更高如《GTA》、《使命召唤》、《刺客信条》等,但是市场需求依然存在,《绝地求生》的大火、《港诡实录》热卖、《龙之谷》的重燃,也在说明了pc端3D游戏市场仍然符合用户需求。
1.5项目的简介
本篇论文的主要构思为3D类塔防游戏《方块防线》,是一款电脑按照一条或多条既定路线前进,抵达玩家的需要守护的基地,期间玩家需要通过鼠标点击可操作的地面并且支付资源来建造塔,利用初始资源和游戏过程中所获得资源抵挡住电脑的进攻,传统的电脑进行进攻,玩家则进行防守模式的塔防游戏。
游戏的平台定在Windows平台。
通过Unity3D的游戏开发工具及其提供的插件工具,基本可以实现这个游戏的初步制作,再使用C#语言和Visual Studio 2019编译工具,编写各个脚本的代码,让游戏所需要的操作、功能和碰撞效果、NGUI界面、粒子特效得以实现。
第2章Unity3D界面及基本操作
2.1 Unity3D的界面
打开我们已经下载安装好的Unity3D软件,打开软件需要正在联网,登陆已注册账号,选择右上角的+new进行创建项目
图2.1创建项目
进入我们的项目,可以发现一共有5个主要区域:
①Hierarchy View(游戏对象层级面板):包含了每一个当前场景的所有游戏对象,鼠标拖动可以自由改变他们的层级。
在这里,可以选中游戏对象进行修改属性、添加组件,也可以鼠标右击进行创建新的游戏对象。
图2.2 Hierarchy View(游戏对象层级面板)
②Project View(项目资源列表):显示可用的资源列表,包括脚本、贴图、模型、场景等文件,并且这些文件都组织到一个Assets文件夹中,Assets文件夹包含创建或导入的所有文件资源,开发者可以在这里访问和管理资源。
图2.3 Project View(项目资源列表)
③Inspector View(对象属性面板):显示已选定的游戏对象的所有组件及其属性,脚本也是一种组件。
选中游戏对象之后,会在这个界面显示出对应的可修改属性,也可以点击属性面板的add按钮添加需要的组件。
图2.4 Inspector View(对象属性面板)
④Scene View(场景面板):游戏世界以及关卡的一个可视化表示,可对游戏对象进行编辑的可视化区域。
此界面允许操作者通过鼠标和各种快捷键进行快速的对游戏对象进行拖拉、复制、删除等操作。
图2.5 Scene View(场景面板)
⑤Game View(游戏面板):显示最终成果的游戏运行画面,可设置不同的分辨率查看运行情况。
点击上方的播放游戏运行后,可以直接观察到游戏的最终运行情况。
图2.6 Game View (游戏面板)
2.2 Unity3D的基本操作
2.2.1 Unity3D菜单栏
Unity3D菜单栏一共有7个菜单栏,分别是File(文件)、Edit(编辑)、Assets (资源)、GameObject(游戏对象)、Component(组件)、Window(窗口)和Help (帮助)。
图2.7 Unity3D菜单栏
①File菜单主要用于打开、创建、保存场景和项目,也包括打包和发布游戏;
②Edit菜单用于对场景对象进行复制、粘贴、撤销、重做等基本操作以及对项目的登陆、退出等相关设置;
③Assets菜单主要是对资源进行新建、导入、导出等功能;
④GameObject菜单主要是对游戏对象进行操作,如创建、显示、移动等;
⑤Component菜单主要是在开发过程中为游戏物体添加组件或属性;
⑥Window菜单主要是用于显示Scene、Game和Inspector等窗口。
2.2.2 Unity3D工具栏
Unity3D的工具栏中一共有13个常用工具
图2.8 Unity上方的工具栏
分别是:
①移动场景视图画面的平移窗口工具;
②针对单个或两个轴向做位移的位移工具、旋转工具、缩放工具;
③常在设计U I界面时用于设定矩形选框的设定矩形选框工具;
④在以对象中心轴线或者以网格轴线之间切换作为参考轴做移动、旋
转及缩放之中切换的工具;
⑤在控制对象本身的轴向、控制世界坐标的轴向之间切换的工具;
⑥播放游戏;暂停游戏;单步执行;
⑦设定图层的图层下拉列表;
⑧选择或自定义Unity 3D 的页面布局的页面布局下拉列表。
2.2.3 Unity3D常用快捷键
①F:在Scene面板快速显示到你选中的游戏对象,并且将其居中
②F2:对当前选中的项目、游戏对象进行重命名
③Delete:删除选中对象
④CTRL+D:复制当前选中的项目、游戏对象
⑤ALT+鼠标左键:旋转当前场景
⑥ALT+鼠标中键:平移当前场景
⑦ALT+鼠标右键:缩放可见视野
第3章游戏策划
3.1 游戏的简要介绍
本论文将介绍我是如何使用Unity3D软件设计出一款传统塔防类的3D游戏——《方块防线》。
开始游戏时,会在一定时间内会多次生成怪物,一次会有一个或多个怪物,怪物会通过既定的路线前进,最终会成功抵达玩家守护的基地,若是怪物的前进没有被玩家成功阻挠,抵达基地的时候,玩家将会失败,相反,成功阻止全部怪物的前进,即可通关游戏。
游戏开局时,玩家会获得有限的游戏资源或者说金币进行建造炮塔,可以在游戏界面右方选择需要建造的炮塔,在可建造的空格上面建造和升级炮塔,炮塔会对范围的怪物进行攻击,怪物受到一定的伤害将会被击倒,以此来对怪物的前进进行阻挠。
游戏的地图由Unity3D可选的游戏对象Cube和自行寻找的一些贴图及模型进行建构,游戏中的天空盒子也为Unity默认的天空盒子。
游戏使用的是第三人称视角,通过Unity的摄像机拍摄出来画面,呈现给玩家,摄像机可通过W、A、S、D和鼠标滚轮进行移动及缩放视角。
UI的设计使用了Unity中的GUI Textture、GUI Label、GUi Button等形式。
音效方面,为开始界面的点击效果、游戏进行中的背景音、炮弹和游戏对象被击倒的效果等配置了合适的音效。
游戏设计的场景较少,仅有开始场景、选关场景、关卡1、关卡2这四个场景。
开始场景主要是通过UI系统显示出开始游戏和退出游戏,选关场景也是简单的使用UI系统显示出关卡1、2。
游戏场景就是关卡1、2,通过添加材质、模型和进行适当的修改,导入了所需要的游戏对象,如组成地面路径的方块、怪物生成点和基地的模型等。
虽然场景较少,但是作为一款塔防类游戏所需的功能基本可以实现,也可以证实了基于Unity3D的塔防游戏的研究与实现是可行的。
3.2 背景与情节
游戏讲述了玩家前往新发现的地域建造基地,但是这种行为惹怒了当地的不明生物,使得玩家还处于新生状态的基地遭到了不明生物的进攻,为了尽量的守护住基地,也为了不让自己被挂上失职的罪名,作为队长的玩家需要利用基地的有限资源,搭建出足够对付敌方进攻的炮塔防线,阻挡住怪物的进攻,守护基地和饭碗之战就此展开。
3.3游戏的炮塔、怪物和场景的素材与设计
3.3.1炮塔的设计
游戏中目前可选炮塔只有6种,分别是3种基础的炮塔和3种对应的升级后的炮塔,为了体现基础的炮塔有进行升级过的视觉效果,升级后的炮塔模型需要
通过基础的炮塔为模型基础进行修改。
炮塔的建造和升级都需要一定的金钱,而炮塔无论有没有升级,其攻击力和攻击范围都不会变化,但是为了让炮塔与炮塔之间有着属性的差异,基础型及其升级型的属性需要不一样,所以基础型的炮塔之间的攻击力需要不相同,升级后的炮塔的攻击速度要比未升级的炮塔的攻击速度高。
攻击速度为每秒攻击几次攻击速度的提升,意味着伤害也提升了,就不再提高升级型的攻击力了。
炮塔的设计如下:
表3.1 炮塔属性表
0.7
3.3.2怪物的设计
游戏中目前设置了4种怪物,虽然怪物模型只有3种,但模型为蜘蛛型的怪物拥有两种材质,可以作为两种怪物,其它两种还有巨怪型和蛇怪型。
为了体现怪物之间的差异性,每种怪物移动速度、生命都要有不一样的数值,而为了给游戏的通关增加难度,需要有数值较高的怪物,所以有的怪物需要生命
值偏高,有的怪物就移动速度偏高。
怪物的外形与属性的详细设计如下:
怪物外观
3.3.3游戏场景设计
游戏场景是使用了Unity里自带的游戏对象Cube(方块)作为基础的地形,然后在方块上面添加不同的材质和模型,以成为较为可观的地图,怪物的前进路径也是使用了Cube来构建。
图3.1 未添加材质与模型
图3.2 添加材质与模型后
3.4 游戏操作方法
游戏采用非常简单的操作方式,主要以鼠标操作为主,与传统的塔防游戏操作相似,具体的操作如下所示:
①鼠标左键:进行选中确定
②鼠标滚轮:拉进和拉远游戏视角
③W键:控制视角向上移动
④S键:控制视角向下移动
⑤A键:控制视角向左移动
⑥D键:控制视角向右移动
第4章游戏的设计与实现
4.1 准备游戏工程
首先我们需要准备好Unity3D软件和Visual Studio编译工具。
联网并且打开Unity3D,经过登陆的操作之后,点击右上角的+New按钮,进行创建新的项目,项目名字就为Tower Defense吧,在项目类型中选择3D类型,工程路径就默认Unity工程路径,统计功能选择关闭,开始创建。
图4.1.1开始创建游戏项目
进入正式的开发界面,首先在Project面板上的Assets文件夹下面新建一个Senses文件夹用来保存场景,然后通过File菜单栏新建一个场景名为MainLV1保存在Senses文件夹。
这时候我们发现场景中只有摄像机和光照两个对象,继续在Hierarchy面板上鼠标右击选择3D Object-Plane进行创建一个平面作为背景,选中Plane,在Inspector面板上面选择Transform组件的右上角齿轮状的菜单下的reset进行重置一下属性,并且把Scale的X、Z改为300以放大背景。
再新建一个Material文件夹来保存材质,右键新建一个材质球名为Plane,并且修改材质球的颜色,拖拉到plane对象上面。
图4.1.2 作为背景的Plane的Transform组件属性
图4.1.3材质球的颜色属性
4.2地图的设计
本次项目将利用Unity自带的Cube来创建基础的地图,首先还是新建一个文件夹名为Prefab进行保存预制体,然后新建一个Cube(方块)物体,并且重命名为MapCube,一样是重置一下三维和位置属性,Scale属性的x、z改为4,并将修改后的拖拉到我们的Prefab文件夹,成为预制体以便使用。
然后新建一个空物品Create Empty,重命名为MapCube,作为Cube物品的父级,以便管理。
图4.2.1便于管理的MapCube
选中我们的修改后的方块,使用Ctrl+D快捷键进行复制,并且使用工具栏中的位移工具并且位移过程中按住Ctrl键可一单位一单位的进行位移,复制足够多的方块,以构成基本的地图。
然后,选择一定数量的连续的方块进行删除,将以此空白处制作怪物的前进的路径,同样是使用Cube物品,先是创建空物品名为RoadCube作为父级,在其下创建新Cube物品名为RoadCube同时制成预制体,其次是根据实际路径复制多个RoadCube方块,根据路径的大小进行属性上的调
整、大小和位置的微调,并且给予不一样颜色的材质球以区分。
最后是将进行起点和终点的制作,同样,我们也是使用cube物品,以上方为起点,下方为终点,制作两个较大的方块,分别名为Start和End,修改它们的属性并制成预制体。
图4.2.2由方块组成的最基本的地图
最后是导入我们的模型素材,让地图不那么的单调枯燥。
导入完成后,把我们需要的材质贴图,拖拉到我们的MapCube、RoadCube预制体上去,并且进行适当的修改,并且使用适当的植被、建筑模型进行修改大小,方向等属性来装饰地图,最后吧Start和End通过把属性最左上方的√号取消掉来隐藏掉。
图4.2.3关卡1的地图
图4.2.4关卡2的地图
4.3模型和材质的导入
Unity中可以通过Assert菜单中的Import Package我们的准备好的素材和模型,导入的模型自动生成Assert文件夹里面,需要使用时可直接从文件夹拖拉到场景或者面板中。
Unity可识别使用多种格式的模型,多种导入的格式,不可谓不方便,我们可以选择在网上或者自己制作模型,但是因为我并不熟悉模型的制作,所以使用了网上的素材、模型。
4.4怪物及其脚本设计
4.4.1怪物的移动
第一步是创建路径点,首先创建空物体WayPoint并且复制多个,分别移动至路径每一个拐角的中心,然后归到一个父级空物体WayPoints方便管理。
接着新建脚本WayPoint,绑定在父级的WayPoints游戏对象上,脚本实现把所有的路径点遍历一次,生成一个路径点的数组,以便读取使用。
图4.4.1 生成路径点数组的脚本WayPoint
最后还是新建一个Enemy脚本,绑定在每一个需要使用的怪物的预制体上,并在脚本中实现:读取已生成的路径点数组和赋予怪物速度,并且让怪物按照路径点进行移动和转向,怪物在抵达终点时,脚本会调用方法把怪物销毁。
移动的过程中,因为是网上的素材,所以直接在怪物的属性面板上选择素材自带的移动动画进行循环播放。
图4.4.2 Enemy脚本的怪物移动部分①
图4.4.3 Enemy脚本的怪物移动部分②
4.4.2怪物的生成
首先把需要使用的怪物模型素材准备好,并且根据地图调整模型大小,制成预制体备用,然后新建脚本Wave,实现存放每一波怪物的生成属性:游戏对象、个数、生成间隔。
图4.4.4保存怪物生成属性的Wave脚本
第二步,创建一个空物体GameManager以用来存放和管理脚本,继续新建一个脚本EnemySpawner,脚本需要实现:根据Wave脚本设定的属性来生成保存怪物属性的数组;设定怪物生成的初始点;在初始点生成多波怪物;怪物的同一波生成中的每一个怪物需要有一定的间隔时间;每一波的生成同样需要一定的间隔时间;上一波的怪物没有全部到达终点不继续生成下一波怪物。
图4.4.5 怪物的生成脚本EnemySpawner
并且需要把脚本EnemySpawner拖拉至GameManager进行绑定和属性的修改,先进行设置Wave数组的大小为怪物的种类数量,然后添加怪物的预制体、调整所需要生成的个数以及同一波中的生成间隔时间、把前面创建好的Start添加怪物生成的初始点位置属性中,调整每一波的生成间隔时间。
图4.4.6 EnemySpawner脚本属性的详细设置
4.4.3怪物的死亡
不同的怪物拥有不同的生命和死亡动画、音效,当被子弹碰撞到时,触发触发器,调用怪物生命消减方法,生命小于等于0时,调用死亡方法,死亡时播放死亡动画和音效,需要在Enemy脚本中添加这些功能代码。
图4.4.7 怪物生命消减和死亡的关键代码
4.5炮塔及其脚本设计
4.5.1炮塔的建造
首先是准备工作,导入炮塔的模型,拖拉到一个MapCube上面,调整炮塔的大小符合MapCube大小,拖入Prefab文件夹中成为预制体,继续复制基础的炮塔对其进行扩大和改色,当做升级后的炮塔,同样是要制成预制体,然后删掉场景中的炮塔,在这里,我制作了3种炮塔及其升级后炮塔。
图4.5.1三款炮塔及其升级体
然后是炮塔建造时的特效,我选择使用了Unity3D自带的粒子系统进行制作
建造特效,在Hierarchy面板中右键选择Effects中的Particle System进行创建并重命名为BuildEffect,在其Particle System的属性面板进行修改,然后新建一个材质球命名为BuildEffect并拖入Renderer组件中Material,得到需要的特效后,放进在Prefab文件夹下新建的Effects文件夹中作为预制体备用。
图4.5.2 BuildEffect特效的详细设置
图4.5.3 建造特效
最后就是通过脚本实现炮塔的实例化。
新建脚本TurretDate来保存炮塔的生成对象、建设金钱、升级后的生成对象、升级所需金钱、塔的类型。
图4.5.4保存炮塔信息的脚本TurretDate
新建脚本MapCube绑定在MapCube方块预制体上面,用来保存实例化Cube 上面的炮塔和在Cube方块上面实例化炮塔及其特效。
图4.5.5 实例化炮塔及其特效的脚本MapCube
新建脚本BuildManager绑定在场景中的GameManager上面,需要实现对炮塔的各种操作,通过引用TurretDate的属性定义实现对炮塔属性的管理和获取选择中的炮塔数据,使用射线判断鼠标左键点击的Cube上面是否已存在炮塔,在获得鼠标左键点击的Cube的坐标后在其上方实例化炮塔,金钱是否足够建造炮塔。
最后还需要把之前创建MapCube预制体属性面板中的Layer属性新添并且选中MapCube。