基于unity3D的塔防游戏开发
2018-12-13仲晓庆蔡朝晖
仲晓庆 蔡朝晖
摘 要:塔防游戏作为一个在休闲游戏爱好人群中经久不衰的玩法类别,凭借多样的玩法与超高的游戏体验始终保有相当数量的忠实玩家。文章根据游戏的开发思路,使用unity3D引擎开发了一款塔防游戏。本游戏主要分为三个模块,一是系统设置,包括游戏的各种设置,二是防御塔的功能设计,包括对防御塔的操作以及防御塔的攻击,三是敌人的功能设计,包括敌人的各种行为设计。结果表明敌人与防御塔的属性设置很合理,游戏体验良好。
关键词:unity3D;塔防;游戏开发
中图分类号:TP391 文献标志码:A 文章编号:2095-2945(2018)29-0014-03
Abstract: Due to its variety of playing methods and the super experience, the tower defense game, as an unduring playing class in the leisure game lover groups, has been always retaining a considerable number of loyal players. According to game concept, a tower defense game, which is based on C#, is designed and realized in this paper. This game system mainly consists of three modules. The first one is system settings, including the various settings of the game. The second one is the function design of the defense tower, including the operation and attack of the defense tower. The third part is the function design of the enemy, including the various behaviors designs of enemies. The result shows that the properties of enemies and towers are reasonable and the game experience is great.
Keywords: unity3D; tower defence; game development
引言
近年来,迅速发展的手机游戏、网页游戏和PC游戏已经成为游戏行业主流。随着玩家对游戏的沉浸感和体验感的要求逐渐增加,3D游戏成了当前游戏发展的主要热点[1]。unity3D游戏引擎为开发者提供了创建高质量3D游戏和真实视觉效果的核心技术,为3D游戏的开发提供了强大的推动力[2]。
塔防,炮塔防御(Tower Defence,TD)的简称。作为一个经典的休闲游戏类别,塔防游戏从来没有过成为真正的主流游戏,但却始终都保有相当数量的忠实玩家,塔防游戏从产生到现在20余年,用不温不火来形容完全不为过。不过,随着现在整个游戏行业在玩法上的细化与创新,塔防类游戏也迎来了又一个春天,一些玩法和类别更多样的塔防游戏开始问世——如手游市场上的《保卫萝卜》,客户端网游领域的《植物大战僵尸》等等。而塔防这一经典的游戏玩法类型或许将在这一趋势当中迎来前所未有的发展机遇。本文使用unity3D引擎开发的这款3D塔防游戏内容丰富,游戏体验良好,这类策略游戏不仅可以使玩家娱乐,还能使玩家的智力得到很好的提升。
1 游戏分析
此款塔防游戏的玩法规则是地图的一端自动出兵攻击地图的另一端,在敌人行动路线的两边玩家可按照自己的思路放置防御塔来阻止敌人的攻击,一旦防御塔的放置位置不对,或者所选择的防御塔攻击速度不够快,就阻止不了敌人的攻击,那么敌人就很容易攻入玩家大本营,玩家便输了。所以要求这类策略游戏要给玩家尽量大的个人发挥空间[3]。要达到这一点,可以从多方面着手:1.地图;2.防御塔;3.敌人;4.玩家血量;5.游戏金币。下面分别介绍。
地图:游戏设计要控制敌人从出生点开始,按照事先设计好的路线到达终点,路线越不固定越多样化越好,这就要求设计一个更为合理的敌人路线,来改变敌人原有的最短路线,或者把敌人到达终点的路线变得更长,为防御塔的攻击提供更长的时间,从而达到消灭敌人的目的。
防御塔:可以设置不同的防御塔来供玩家选用,防御塔的不同可以从攻击速度、攻击范围,还有购买和升级防御塔所消耗的游戲金币、卖掉防御塔和所获得的游戏金币的不同而定。
敌人:从敌人的角度看,在设计敌人的时候可以根据敌人的种类,移动速度、攻击力、数量、生命值以及敌人被击杀后玩家可以获得金币数量的不同而定,一般来说,敌人所携带的金币数量与士兵的生命值是成正比的,敌人等级越高,生命值就越高,同样,攻击力、攻击速度、移动速度也就越高。
玩家血量:即当玩家设置防御塔,无法阻击敌人到达目的地时,有多少敌人到达目的地,攻击力是多少,玩家血量就会减少多少,直到零为止,此时玩家就输了,因此玩家血量的多少可根据游戏的难易程度而设置相应的数量。
游戏金币:游戏中的金币,是支撑玩家继续游戏的源泉,金币越多,完成游戏的速度就越快,游戏就越简单;反之,游戏就越难,因此,合理设置游戏中金币的数量是非常重要的。设置金币是要从以下几个方面入手,游戏初始金币,击杀敌人获得的金币,拆除防御塔获得的金币,建造防御塔损失的金币和升级防御塔损失的金币。
2 游戏设计
本次设计主要体现在防御塔的功能、敌人的功能、防御塔与敌人的交互以及各种UI界面的设计上。游戏开始时通过一段动画进入场景,在开始场景主画面中有5个按钮,分别是开始游戏、游戏难度、音量设置、游戏介绍和退出游戏,通过点击不同的按钮实现相应的功能。游戏开始时进入游戏场景,场景中有玩家血量的显示、玩家金币的显示和暂停按钮。点击暂停按钮弹出暂停界面,暂停界面中有继续游戏,重新开始,音量调节和退出游戏按钮。游戏过程中敌人会一直生成并按照路线移动,此时玩家需要建造防御塔来攻击敌人,所有敌人都死亡,游戏胜利,弹出胜利界面;如果有敌人进入玩家大本营,并且使玩家总血量降为零,游戏结束,弹出失败界面。
整个游戏分成系统、防御塔、敌人三大模块。每个模块进一步又可以细分为若干个子模块。塔防游戏的功能结构图如图1所示。
3 游戏实现
3.1 防御塔
防御塔在塔防游戏中的作用是为了阻止敌人的入侵,其属性有攻击速度、价值和攻击范围。攻击速度越快击杀敌人的速度越快,攻击速度会根据塔的类型来决定,本次设计共有三种防御塔,分为1、2、3三种等级。首先设出防御塔的摆放位置,添加一些unity3D自带的圆柱体,调整大小后放置在地图的合适位置上,通过点击圆柱体就可以放置防御塔了,因为圆柱体的作用只是为了触发事件,所以需要关掉圆柱体的MeshRenderer组件,这样在游戏过程中就不会看见这些圆柱体了。
游戏中,通过点击塔的底座来建立防御塔。当玩家拥有的金币数量大于建立防御塔花费的金币并且判定点击的是防御塔的标签时,系统通过Resources.Load
3.2 敌人
敌人生成后,加入到enemyList列表,再设计出敌人在地图上行走的路线,使用transform.LookAt()方法使敌人的每一帧运动都是面朝着目标点的,然后按照自己的属性获取移动速度,再使用移动方法transform.Translate()来使敌人移动,在移动的过程中,为防止敌人一直朝着目标点的反向运动不停止,会有一个距离限制,当敌人距离目标点小于0.1时会停下来。实现方法是创建出一些空物体点作为敌人移动的目标,按地图位置摆放好,其中enemyposition和monserposition是敌人的生成点,homeposition是玩家大本营。
因为游戏目的是让敌人一直运动直到死亡或是到终点也就是玩家大本营,所以要让敌人继续向着下一个目标点运动。当敌人距离上一个目标点位置小于等于0.1时,就可以让敌人朝着下一个目标点移动,方法与上一个目标点一样,这样敌人就可以朝着目的地一直移动了。
3.3 玩家
玩家主要是对属性的设置,包括血量和金币。玩家的总血量是游戏的一个重要的属性,玩家游戏的目的就是要在游戏结束前,保证自己的血量大于0,就可以获得游戏的胜利。在游戏过程中,如果有敌人进入玩家大本营,玩家就会损失一定的血量,血量只可以减少,不可以增加。
金币是游戏中的货币,是建设防御塔的前提,在游戏中可以通过击杀敌人来获得相应的金币,还可以通过拆除防御塔来获得金币。当在游戏中建立防御塔时,金币会相应的减少,所以合理规划金币的使用是游戏获胜的关键。
3.4 UI
在unity3D中设计UI有3种方法:一种是NGUI,通过插件创建;一种是UGUI,通过游戏自带的组件,一种是OnGUI,在unity3D的生命周期OnGUI中编写代码。本次设计使用OnGUI。根据游戏的需求需要设计5个UI界面,分别是游戏运行时的初始菜单界面、游戏运行时的界面、暂停界面、游戏胜利界面和游戏失败界面。限于篇幅,只给出游戏开始和暂停界面。
4 结束语
本文使用unity3D引擎开发了一款内容丰富的塔防游戏,实现的主要功能有敌人的生成、敌人的移动、创建防御塔、防御塔的攻击。结果表明游戏属性设置合理,敌人与防御塔的交互良好,玩家的游戏体验良好,可玩性很高。
参考文献:
[1]盧金浩,张帅,伍传敏.基于unity3D三维游戏场景与AI系统的设计与实现[J].三明学院学报,2013,30(6):31-35.
[2]刘俊,郭祖江.基于unity3D的塔防游戏设计与实现[J].科技传播,2015(5):152-154.
[3]张鹏飞,江岸.基于Android系统的塔防类游戏开发[J].信息与电脑(理论版),2014(3):47-50.
[4]胡蓉.浅谈现代手机游戏制作[J].科技创新与应用,2017(17):297.
[5]赵明明,王明时.基于用户体验的触屏手机游戏界面设计研究[J].科技创新与应用,2012(12):50.
[6]谈嗣徽,温彦茹.关于手机游戏设计的研究--如何设计一款成功的手机游戏[J].科技创新与应用,2015(18):9-10.