Scratch第70讲:飞机大战(二)

2019-11-09 13:10

想了解编程技巧,就请点击上面蓝字:跟我学Scratch编程,关注CC哥



上一讲做了飞机控制的部分,今天我们一起做一下敌机的部分,CC哥在写这篇帖子的时候,也没想全敌机的部分都可以做哪些显得游戏更生动。

敌机的程序构思

敌机攻击模式,在CC哥想来大概有几点:

1:敌机数量很多,但是大部分子弹不多且数量慢。敌机少了玩家没快感,子弹太多太快,那就没法玩了。

2:敌机出场要有两种,一种编队出场,整整齐齐的出来一组飞机,飞行方向不变。一种就是单个出场,但是目标向我们的战机冲来,想要撞毁我们的玩家。

3:敌机种类应该有很多,不过CC哥目前只找了两张敌机的元素,一个战斗机一个轰炸机,那么轰炸机要和战斗机不一样,轰炸机那么大,肯定要禁打一些,可以多挨上几炮,同时,轰炸机攻击方式可以一次出一排炸弹。

大概的攻击思路上面差不多了,咱们看看程序怎么玩:

编队敌机出场

编队的队形,大家可以设计很多种,CC哥作为示范教学就做三种好了。三种队形随机出场。间隔的时间也是随机的。

https://cdn.china-scratch.com/timg/191111/1310261117-0.jpg

用自定义命令容易让代码更加容易读,后续在升级或更新代码的时候也会影响最小,所以建议大家在做较复杂的程序时要多用自定义命令。

敌机肯定是用克隆体来做了,攻击队形的自定义模块:

https://cdn.china-scratch.com/timg/191111/13102JA8-1.jpg

注意敌机都是从最高处出来的,如果有队形,那么肯定是一排一排出现的,那么在队形里的每一排战机克隆后,加入等待命令,等待时间的长短就代表了敌机出场的间距。

程序的关键部分就是克隆体的代码部分,CC哥喜欢把克隆体的进程分开做,这样程序就易懂不混乱,自己在纠错的时候也容易找到出错的位置。

我们看看敌机的克隆体有几个事件同时发生:

1:克隆体向下移动:

https://cdn.china-scratch.com/timg/191111/13102I109-2.jpg

CC哥没有删除克隆体的侦测条件没有用“碰到舞台边缘”是因为,克隆体的出场位置就已经是在舞台边缘上了,所以这个检测就没有意义。只能用敌机的位置作为判断条件才合理。

2:敌机的动画效果,上一讲说了,用螺旋桨旋转的效果来增加敌机的动画效果。

https://cdn.china-scratch.com/timg/191111/13102K034-3.jpg

3:敌机发射子弹:

https://cdn.china-scratch.com/timg/191111/13102J218-4.jpg

这部分需要有点程序经验,因为发射子弹的敌机是克隆体,同时子弹在这个游戏里肯定也是克隆体。那么就面临了不同角色克隆体之间的互动问题。CC哥之前的讲座就明确讲了,克隆体之间的互动不建议用大家最熟悉的消息传递来做,而是应该通过公共变量来进行动作的同步。“发射子弹”这个变量就是这个用来做动作同步的变量。

在发射子弹这个部分,CC哥做的是让子弹去找敌机,每一个敌机发射子弹时,会把飞机的坐标位置给到“子弹位置X”和“子弹位置Y”,然后让发射子弹角色跑到该坐标上再进行发射子弹的操作。

https://cdn.china-scratch.com/timg/191111/13102T5U-5.jpg

如果想免费获得CC哥的讲座中的程序代码以及游戏素材,可以通过扫描二维码关注《跟我学Scratch编程》,然后点击获取代码即可。

4:敌机被击中或碰到舞台边缘

https://cdn.china-scratch.com/timg/191111/13102VD5-6.jpg

当被击中的时候,生命减去1,如果撞到战机,那么直接毁灭。CC哥放了一个爆炸效果造型进去,一旦敌机被击毁,就播放一段爆炸效果。

https://cdn.china-scratch.com/timg/191111/13102QH7-7.jpg

https://cdn.china-scratch.com/timg/191111/13102S605-8.jpg

敌机子弹

https://cdn.china-scratch.com/timg/191111/13102S605-8.jpg

敌机子弹这个是配合敌机的角色,所以这段代码就是去不断检测是否需要发射子弹,一旦检测到需要发射子弹,就马上跑到发射位置克隆自己。

https://cdn.china-scratch.com/timg/191111/13102QN0-10.jpg

子弹面向战机飞去,碰到战机或舞台边缘处消失。

自杀式敌机

https://cdn.china-scratch.com/timg/191111/1310294b6-11.jpg

飞机的角色造型不好找,但是CC哥把敌机的造型颜色重新涂了一下,马上又变成一种新敌机了。这个敌机的攻击方式就是CC哥上一讲说的,直接撞向我方战机。

出场位置确定

https://cdn.china-scratch.com/timg/191111/13102942T-12.jpg

制作敌机的动画效果和攻击程序。

https://cdn.china-scratch.com/timg/191111/1310294G1-13.jpg

https://cdn.china-scratch.com/timg/191111/1310294012-14.jpg

被击中的代码。

这个自杀式敌机的代码相对简单,就不讲解了。

战机部分

https://cdn.china-scratch.com/timg/191111/1310303392-15.jpg

战机部分增加了这段代码,就是当被敌机击中之后以及撞到敌机或者被自杀敌机撞到之后的程序。

别看简单,这里面有一个经验技巧,就是这个等待0.1秒,因为两个克隆体碰撞之后,应该都消失掉,但是程序执行不是完美同步的,所以当碰撞发生之时,两边的侦测命令并不是同步执行的,快的一边已经把克隆体删除掉了,另一边也就侦测不到碰撞了,所以这个等0.1秒,就是让快的一方晚一点删除克隆体,确保对方也有时间侦测的这个碰撞事件。大家听明白没有?如果没有可以自己试试不加这个命令的效果,看看bug出现在哪里。

--end--

后记,小编朋友公司研发了一个游戏化的少儿编程在线课程(5-12岁),游戏化教学结合scratch(一款在线少儿编程工具,类似乐高的积木拼搭),我家娃娃学了几次课,非常喜欢(超预期),16次课才200多块钱,对锻炼孩子的思维能力和动手动力很有帮助。

感兴趣的朋友可以扫描二维码,关注一下,或微信搜索“大耳猴少儿编程”

https://www.china-scratch.com/Uploads/Editor/2018-04-22/5adca08bdc212.jpg

声明:本文章由爬虫自动处理和转载作为教育分享用途,原作者可通过邮件及时和我们联系处理:freemanzk@qq.com