基于Unity3D的塔防类游戏的设计与实现 您所在的位置:网站首页 游戏炮塔平面设计 基于Unity3D的塔防类游戏的设计与实现

基于Unity3D的塔防类游戏的设计与实现

2024-07-17 14:12| 来源: 网络整理| 查看: 265

张越 陶俊 徐迅

摘  要:文章基于Unity3D开发引擎,设计并制作了一个塔防类的3D游戏。主要分为两个模块,一是敌人功能的设计,包括敌人按照规定路线移动,敌人受到攻击扣除血量等;二是防御塔的设计,包括对敌人进行攻击,建造、升级、拆除防御塔等功能设计。使用了3ds Max软件建造角色和场景的模型,最后在Unity3D中实现游戏的开发,结果表明敌人和防御塔设计合理,游戏体验良好。

关键词:Unity3D;塔防类游戏;C#脚本;3ds Max

中图分类号:TP317      文献标识码:A 文章编号:2096-4706(2021)01-0084-04

Design and Implementation of Tower Defense Game Based on Unity3D

ZHANG Yue,TAO Jun,XU Xun

(School of Artificial Intelligence,Jianghan University,Wuhan  430056,China)

Abstract:This paper designs and produces a tower defense 3D game based on Unity3D development engine. It is mainly divided into two modules,one is the design of the enemy function,including the enemy moving according to the prescribed route,the enemy being attacked deducting the amount of blood and so on;the second is the design of the defense tower,including the attack on the enemy,construction,upgrade,demolition of defense towers and other functional design. The 3ds Max software was used to build the models of the characters and scenes,and finally the game was developed in Unity3D. The results showed that the enemy and defense towers were designed reasonably and the game experience was good.

Keywords:Unity3D;tower defense game;C# script;3ds Max

0  引  言

国内游戏产业突飞猛进的发展和手机的快速普及,根据市场调研公司Newzoo的数据报告2023年全球玩家将达30亿。其中许多玩家进入游戏领域都是通过移动设备。而根据中国音数协游戏工委(GPC)与国际数据公司(IDC)共同发布的《2020第一季度中國游戏产业报告》,受新冠肺炎疫情影响,“宅经济”大热,游戏业保持了非常高的增速,报告显示2020年第一季度,中国游戏市场实际销售为730.03亿元,其中移动游戏市场占了75.64%的市场份额,实际销售收入为553.70亿元。基于报告表明,中国游戏市场正处于飞速发展的阶段。塔防游戏(Tower Defence Game,TDG)为一个经典的休闲游戏类别,被许多玩家所喜爱,如手游市场上的《部落冲突》。基于以上数据,本人设计开发了一款移动端的塔防类游戏,游戏节奏较快,可以使得玩家利用碎片化时间进行体验,使用Unity3D引擎开发的这款3D塔防游戏在保证可玩性和策略性的基础上,增加了摄像机移动功能,优化了游戏画质。

1  游戏分析

此款塔防游戏的玩法规则是在地图的一侧出生点生成敌人,敌人按照规定的路线行进到地图的另一侧,在敌人行动路线的两侧玩家可以根据自己的金钱多少,建造炮台来攻击敌人,使得敌人无法到达终点,如果炮台放置的位置不对,或炮台的威力不够等,导致敌人到达了终点,敌人就攻入了玩家的大本营,玩家便输了。玩家需要从地图、炮台、敌人、游戏金币四方面制定防御策略。下面分别介绍:

(1)地图:敌人从出生点开始生成,按照规定路线朝着终点行进,中途会有转角处,这就使得玩家在建造炮台的地方有所选择,游戏中敌人的行进路线设计了许多转弯,从而延长了敌人到达终点的时间,使得玩家有足够的时间考虑在哪里建造炮台。

(2)炮台:炮台有3种种类,每种炮台的建造成本,攻击速度,威力各不相同。玩家需要根据当前情况对炮塔进行选择,同时每种炮台还能进行升级,使得玩家的选择更加的多样性。

(3)敌人:敌人有4种,并且每一波生成敌人的数目不同,同时不同敌人的血量、移动速度不同,击杀后玩家获得的金币也不同。

(4)游戏金币:游戏中的金币,是支撑玩家继续游戏的源泉,金币越多,玩家所能建造的炮台也就越多,游戏就越简单;反之,游戏就越难。因此,合理的设置游戏中金币的数量非常重要,初始金币、击杀敌人获取的金币、建造防御塔损失的金币、升级防御塔损失的金币和拆除防御塔获得的金币,这些金币的数量都需要严谨的考虑。

2  游戏设计

塔防游戏功能设计模块如图1所示。

本次设计主要体现在防御塔的功能、敌人的功能、以及各种UI界面的设计上。游戏开始时玩家需要先进行账号的登录,若没有账号则先进行注册。登录成功后,可以对游戏进行设置,如背景音乐音量的大小、游戏的难度等,也可直接进入游戏。进入游戏后,左上角为玩家金币的数量,最右侧为三种炮台的UI,点击相应的按钮则可以建造不同的炮台。在3秒的等待后,第一关的第一波敌人生成,按照规定的路线向着终点移动。玩家则用初始的金币建造炮台,守住第一波的攻势,得到的金币进行下一波的炮台建造。同时玩家可以点击暂停按钮弹出暂停界面,暂停界面中有继续游戏、重新开始和退出游戏按钮。所有敌人都死亡后,游戏胜利进入下一关;如果有敌人进入了玩家大本营,并且玩家总血量降为0,游戏结束,弹出失败界面。对于游戏的GameManager采用单例模式设计,方便对游戏的控制并且节约系统资源。对于炮台和敌人则采用类似MVC的设计模式,使得炮台和敌人的数据模块和功能模块分开,降低了程序的开发难度,提高了程序的可维护性。

游戏包含的类主要为GameManager.cs、Bullet.cs、Enemy.cs、Turret.cs等,如图2所示。

GameManager类:实现游戏的总体控制,如UI控制、场景加载等功能。

Bullet类:实现子弹的追踪、扣除敌人血量等功能。

Enemy类:实现敌人的移动、受到伤害死亡等功能。

Turret类:实现发射子弹等功能。

3  游戏实现

3.1  Unity3D游戏引擎关键技术

Unity3D引擎具有许多模块,下文列举一些本次开发中使用比较频繁的功能模块。

3.1.1  预设体

预设体(Prefab)为Unity中的重要概念,Prefab中储存着一个游戏对象,包括游戏对象的所有组件以及其下所有子游戏对象。在Hierarchy视图中可以对Prefab进行复制粘贴。本次开发中所有的敌人和炮台都采用了预设体的设计,大大减少了重复性工作,简化了工作量。我们首先将炮台的模型导入到Unity中,将炮台所需的脚本Turret编写好加载到目标上,测试其功能无误后,将当前对象拖入Project视图中,做为炮台的预设体。

3.1.2  UGUI核心控件

UGUI Panel可将该面板控件看作一个容器,我们将其他的UI控件放置在上面进行编辑。利用Text文本组件显示建造炮台所消耗的金币和消灭敌人所获得的金币。我们利用Button和Image组件实现建造炮台的按钮,将图片转为精灵格式,使用填充的呈现方式,使得界面更加友好。而不同炮台的建造,我们将三个炮台建造按钮放入同一个Toggle中,这样保证UI传入的数据正确,每次玩家都只会建造一种炮台,避免了不必要的错误。

3.2  游戏的AI设计

3.2.1  敌人

我们为敌人编写了两个类,分别为Enemy类和CreateEnemy类。CreateEnemy类:实现在出生点对敌人的创建。为了实现敌人按照路点进行前进从而形成特定的路线时,我们在地图中设定了路点,使敌人获取路点这个数组,由下一个路点的位置减去当前路点的位置,则得到一条由当前位置指向下一个路点的向量,将其单位化,利用transform中的方法,使敌人按照这个向量移动即可。当移动到一个路点后,number++则进行计算下一个路点。主要代码为:

if (index > positions.Length - 1) {return; }

transform.Translate((positions[index].position - transform.position).normalized * Time.deltaTime * speed);

if (Vector3.Distance(positions[index].position , transform.position)

if (index > positions.Length - 1){ReachEnd();}

3.2.2  炮臺

建造炮台功能的实现,我们需要确定鼠标点击在可以建造炮台的地方,鼠标是与MapCube地图块层级进行碰撞,而不是UI层。所以在Unity中我们需要对Physics进行设置,在代码中,我们需要进行判断,这样就可以判断鼠标和相应的层级进行了碰撞。

炮台自动攻击范围内的第一个敌人,我们需要设置一个触发器(trigger),也就是防御塔的攻击范围,在代码中需要设置一个OnTriggerEneter的方法,当敌人进入炮台的攻击范围时,获得敌人这个对象,然后由向量的方法,用敌人的位置,即position,减去炮塔的position就会得到由炮台指向敌人的向量,将其单位化,然后利用transform的方法就可以实现炮台攻击敌人了,并且我们利用transform.lookat的方法,可以保持炮台一直指向敌人。主要代码为:

private void OnTriggerEnter(Collider other)

{if (other.tag == "Enemy"){enemys.Add(other.gameObject); } }

private void OnTriggerExit(Collider other)

{if (other.tag == "Enemy"){enemys.Remove(other.gameObject);}}

void Attack()

{if (enemys[0] == null){EnemyUpdate();}

if (enemys.Count > 0){GameObject bullet = GameObject.Instantiate(bulletPrefab, firePosition.position, firePosition.rotation);

bullet.GetComponent().SetTarget(enemys[0].transform);}

else{timer = attackRateTime;}}

3.2.3  UI界面的设计与制作

游戏的UI界面使用Unity3D中自带的UGUI工具来进行创建,如“开始游戏”按钮、“重新开始”按钮和“建立炮台”按钮、“炮台升级”以及“炮台拆解”按钮等。制作完成的界面如图3和图4所示。

3.2.4  炮弹追踪算法

假设炮弹的位置为(x1,y1,z1),敌人的位置为(x2,y2,z2),则得到两条向量,则由线性代数中向量减法的知识,则  为世界坐标系中原点指向敌人的向量, 为世界坐标系中远点指向炮弹的向量,则  减去  ,由向量减法的几何意义可知  为炮弹指向敌人位置向量:

得到后我们将此向量进行单位化,就可以得到一条单位向量,在游戏里运行的每一帧我们都进行计算,更新此向量,使炮弹按照此方向移动。

4  结  论

本文使用Unity3D引擎开发了一款塔防游戏,实现的主要功能有敌人的生成、敌人的移动、建造防御塔、防御塔攻击、炮弹的追踪等功能。结果表明游戏设计合理,敌人和防御塔的交互性较好,玩家游戏体验良好,可玩性较高。

参考文献:

[1] 周正,司占军.基于Unity3D的冒险闯关类游戏的设计与实现 [J].电脑知识与技术,2020,16(21):90-91.

[2] 蒋明.基于Unity3D的区域景观生态敏感性评价系统设计 [J]. 现代电子技术,2020,43(20):171-174.

[3] 杨剑,白忠建,丁晓峰.数据结构 [M].北京:人民邮电出版社,2013.

[4] 刘俊,郭祖江.基于Unity3D的塔防游戏设计与实现 [J].科技传播,2015,7(5):152-154.

[5] 胡杭.基于Unity3D的移动塔防游戏设计与实现 [J].现代计算机(专业版),2019(4):60-63.

[6] 李遇涵.基于Unity3D的虚拟校园漫游系统的研究 [D].武汉:华中科技大学,2019.

[7] 马力.基于Unity3D旅行故事游戏软件设计与实现 [D].武汉:华中科技大学,2019.

[8] 尹晓卿.基于Unity3D的MMO移动游戏关键技术设计与实现 [D].成都:电子科技大学,2019.

[9] 吴亚峰,索依娜,于复兴.Unity案例开发大全:第2版 [M].北京:人民邮电出版社,2018.

[10] 陈嘉栋.Unity 3D脚本编程——使用C#语言开发跨平台游戏 [M].北京:电子工业出版社,2016.

[11] 徐文芳.基于Unity3D的教育游戏的设计与开发 [D].南昌:江西科技师范大学,2019.

[12] 程宇.Unity3D教育游戏在初中生物教学中的应用研究 [D].广州:广东技术师范大学,2019.

[13] 沈志超.基于Cocos2d-x的RPG手机游戏开发 [D].南京:东南大学,2015.

[14] Unity公司.Unity 5.X/2017 标准教程 [M].北京:人民邮电出版社,2018:99-101.

[15] 姜雪伟.Unity 3D实战核心技术详解 [M].北京:电子工业出版社,2017:193-198.

[16] 岳书丹,陈雪荣.基于Unity3D塔防游戏的设计与实现 [J].電子测试,2020(13):124-126.

[17] 仲晓庆,蔡朝晖.基于unity3D的塔防游戏开发 [J].科技创新与应用,2018(29):14-15+18.

作者简介:张越(1998—),男,汉族,湖北襄阳人,硕士,研究方向:机器学习;通讯作者:陶俊(1976—),男,汉族,湖北武汉人,教授,硕士研究生导师,博士,主要研究方向:机器学习;徐迅(1991—),男,汉族,北京人,硕士,研究方向:计算机视觉。

猜你喜欢 炮台金币向量 向量的分解新高考·高一数学(2022年3期)2022-04-28一块金币摄影与摄像(2020年11期)2020-09-10找金币创新作文(1-2年级)(2019年5期)2019-11-21小野人小猕猴学习画刊(2019年6期)2019-08-13找金币读者(2017年8期)2017-03-29浅说晚清广州江防重镇沙路炮台文物鉴定与鉴赏(2017年3期)2017-03-28胶东半岛炮台的开发利用考试周刊(2016年92期)2016-12-08炮台,战争与和平闽南风(2016年2期)2016-06-14向量垂直在解析几何中的应用高中生学习·高三版(2016年9期)2016-05-14向量五种“变身” 玩转圆锥曲线新高考·高二数学(2015年11期)2015-12-23

现代信息科技2021年1期

现代信息科技的其它文章基于BAS算法的配电网无功优化5G网络切片技术研究多频段组网等综合方案实现5G建设TCO最佳研究基于自适应K-means++的线序特征值提取方法研究基于无人机倾斜摄影技术的三维塔式建模研究基于Android的校园APP的设计与实现


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有