塔防P5 敌人类型和血量系统
塔防游戏 第五集
本集主要实现了敌人的多种类型的处理,和敌人的血量系统。
敌人的多种类型
在敌人类型中创造新的敌人造型,作为新的敌人种类。
之前单一的敌人种类生成可以直接写在主程序中。现在我们需要处理多种敌人,它们可能拥有不同的移动速度,血量等属性,我们建立一个自建积木敌人生成器来处理不同种类的敌人。它有三个输入,为敌人的种类名称,生成数量和生成中的等待时间。我们在调用的时候填入这三个数据,在自建积木内把数据放在该有的位置。这样就可以不需要大幅度增删代码而生成多种类的敌人,只需要在需要生成敌人时,调用自建积木输入数据就行了。
敌人生成器的内容基本就是之前在克隆体生成敌人的代码,复制过来稍作修改。这里有一个新建的私有变量敌人类型,目的是存放每个敌人的类型,因为敌人生成器中的敌人类型变量是函数中的变量,没法在函数外使用,所以需要存放在私有变量里。

敌人类型处理视频里没有,是我用一个自建积木存放的敌人类型设置。

敌人血量
现在,我们所有的敌人都是在射击判定之后直接去世,我们希望能给敌人不同的血量来区分它们的类型。我们新建两个列表敌人血量和敌人血量上限,存放它们当前的血量和血量上限。实时血量随着敌人被攻击而降低,血量上限初始化时赋值后不作更改,主要是为了后面绘制血量条的功能使用。注意这两个列表也需要在游戏开始时初始化。


在每次对敌人造成伤害的判定中,把原本直接令敌人死亡的代码改成减去敌人炮台攻击力的血量,当敌人的血量为0或者更低时,再修改敌人状态为dead。这里的私有变量炮台攻击力在克隆前初始化。

对于敌人消失的不同情况也需要作出处理,敌人碰到地图边缘和被炮台杀死需要分开处理。

接下来对血量条进行绘制。绘制需要用到一个画笔拓展,基本思路是每次找到需要绘制血量条的敌人(我设置了一个逻辑,让满血量的敌人不显示血量条),然后再他的头上先绘制一条较宽的黑色线作边框和北京,再绘制一条较窄的线作当前血量。每次绘制操作之前清空一次屏幕上所有的绘制,体现出动画效果。
绘制血量条的逻辑是敌人血量>0(需要将触碰地图边缘消失的敌人的血量也设为0)和敌人血量<敌人血量上限。
血量条的黑色部分的绘制就是血量条的总长度。蓝色部分的绘制是根据敌人血量的比例绘制长度。最后可以把积木设置为不刷新屏幕,可以改善性能表现。两次绘制之间需要抬笔,不能省略了。

此时测试发现的确有东西被画出来了,但是被路径遮挡住了。这时候把路径复制到背景上,放在下层,把角色中的路径的虚像设置为100,可以解决遮挡问题。

总结
本次课程完成了对敌人类型的拓展和对敌人血量逻辑的完成。这是项目中第一次引入画笔拓展,也用拓展巧妙的实现了血量条的效果。此外还对项目中前几集的代码做了改动,在改动之前一定要妥善保存代码,以免出现问题后无法恢复。

浙公网安备 33010602011771号