第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)在线全文阅读。
相关推荐: