77范文网 - 专业文章范例文档资料分享平台

Unity3D塔防游戏论文(5)

来源:网络收集 时间:2020-10-28 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

第4章 游戏实现 这里的代码只有在编辑状态才能被执行,注意PathTool继承自ScriptableObject,并在展前面引用了UnityEditor。所有在这里使用的属性和函数均为static类型。

[MenuItem(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

 

20

第4章 游戏实现 在这个脚本中,定义了敌人的一些基本属性,如生命值、移动速度、类型等,它有-个路点属性作为当前的出发点。在MoveTo函数中,敌人向当前路点的子节点前进,当距离子路点较近时,即将子路点作为当前路点,再向下一个路点前进。注意这里计算敌人与子路点的距离时没有计算Y 轴,因为我们希望空中的敌人飞到路点上方时即认为是到达该路点。当敌人走到最后的路点,即是到达我方基地,销毁自身,并使基地减少一点生命值。

将放置在预置里的模型放在通道中,并制定这个脚本到模型上,完成敌人的设置。运行时会如图4-20所示。

 

 

图4-20 模型指定

 

4.9 敌人生成器

塔防游戏的敌人通常是成批山砚,一波接着一波,因为敌人的数量众多,所以需要一个生成器按预先设置的顺序生成不同的敌人。为了提高工作效率,需要在Excel中设置每一波出现的敌人,然后将其导出为XML格式,敌人生成器将读取这个XML 文件,按其设置生成敌人。

首先要创建一个用于定义XML格式的数据源,使用任意文本编辑器输入如下文本,并存为template.xml,如图4-21。

 

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 防守单位

本游戏中唯一的一个防守单位是个箭塔,它的功能很简单,当敌人进入它的攻击范

22

第4章 游戏实现 围便会射箭。

创建防守单位的脚本Defender.cs,如图4-24所示。

 

 

 

图4-24 防守单位脚本Defender.cs

 

在这个脚本中,FindEnemy函数主要用于查找进入其攻击范围的敌人,然后在这些敌人中再选出一个生命值最低的敌人作为目标敌人。

Attack函数向敌人攻击,这里只是很简单地调用了敌人的SetDamage函数减少敌人的生命值。

当创建了一个防守单位后,它所处的单元格则被当前防守单位占据,不能再创建其他东西,因此残们在Start函数巾改变了防守单位所处单元格的属性。

然后为导入好的模型指定Defender.cs脚本就可以了。

4.11 生命条

敌人在受到攻击的时候,找们并不知道它受到了多少伤害,为了能够提示它的剩余生命值,需要为它制作一个生命条。在素材中,我准备好了一个平面模型,并附有一张贴图,贴图由简单的黄色和红色组成,我们将使用改变平面模型UV的方式,使黄色表示剩余生命值,红色表示失去的生命,如图4-25所示。

 

23

第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所示。

24

 

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Unity3D塔防游戏论文(5)在线全文阅读。

Unity3D塔防游戏论文(5).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/581223.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: