Scratch版保卫萝卜(四)瞄点判断
原创 徐鹏程 微信公众号:阳光徐来
2021年8月10日
本次分享瞄点的判断问题,也就是游戏中如何让有指向性的攻击武器瞄准最前方的怪物发射,以最大程度的保全萝卜呆萌形态。有指向性的攻击武器比如下面的两位:


至于太阳炮、五叶草等向着固定方向发射子弹的武器,就不需要复杂的瞄点判断了。
第一步 设定瞄点
每一种怪物都要有一个瞄点,我们在每个怪物后面都增加一个精灵(精灵就是Scratch中的角色,细心的同学发现我换用Mind+了嘛,入乡随俗换个叫法哈哈),用不同颜色的小球表示:

一个变量
瞄点精灵的程序来了!首先新建一个变量,注意是仅适用于当前角色的变量,变量名我们这里叫[当前-判断次数]。

瞄点精灵初始化
初始化一下,把[当前-判断次数]设为1,同时设定一下精灵的样子,然后藏起来。当然,调试期间可以暂时不隐藏啊,能够直观的看到效果。延时的时间是在等怪物出来哦~!

瞄点定位
然后就进入循环程序:

面向第一个怪物
先看[否则]这个大嘴巴里面的执行项,因为1秒以后怪物已经出来了,[当前-判断次数]=1,是不可能大于怪物数量的。

重复执行将瞄点移到第一只怪物的位置,也就是跟随移动,直到第一只怪物消失,坐标大于444,必然是被消灭了,或者是吃到萝卜逍遥了。。
重复判断
这时将[当前-判断次数]变量+1,瞄点跟随第二只怪物的位置,以此类推。
如果新的怪物还没刷出来,这时[当前-判断次数]将大于怪物总数,瞄点移到怪物出口位置等着,合情合理~,这就是[如果]大嘴巴里的内容!
程序复用
复制上面的程序,给每种怪物都安插一个间谍精灵,悄悄的跟随还在屏幕中的最前方的一只怪物移动,给炮弹指明一个精准的瞄准点。
第二步 面向瞄点
以绿色水瓶炮的子弹为例,看哪只怪物最欠打。
初始化
首先初始化射程,并将主体隐藏

主体逻辑
如果有瞄点在射程范围内,就开始克隆,子弹出膛!

这里有点啰嗦了,有几种怪物就要做几次对比,条件好长哦,我电脑放不下~!
发射!
克隆体发射

先偷偷往前跑一点,假装是从炮口发射出来的,然后显示出来。
下面就要判断射击哪个瞄点了,上面说过每种怪物都有一个瞄点,而且不同的怪物,前进速度不一样,那就像下面的逻辑,谁离得近打谁。

找准目标了,转动武器,开打!
打中后消失

每颗子弹最多消灭一个敌人哦。
程序复用
小飞机等其他有指向性的攻击武器都同理哦,当然子弹的方向要改为自由旋转:

第三步 其他武器-五页扇
不需要指向性的攻击武器里面,五页扇也是和很有意思的存在,因为他是以固定角度旋转的,控制逻辑是这样的:
初始化

设定射程、大小、初始位置等。
主体旋转

当按下空格后,主体以固定的节奏旋转起来。
克隆体发射

第四步 其他武器-太阳炮
这也是个很酷炫的武器,但是逻辑不是很复杂。分成中间的太阳炮和可以放大的太阳炮子弹两个精灵:

笑脸转转

让太阳炮萌起来。
子弹初始化

和上面的类似,射程大小之类的。
太阳炮光波发射

当按下空格键后,开始寻找射程范围内的怪物,如果发现,光波发射!
第五步 结语
截至本期的内容,Scratch版保卫萝卜小游戏中有意思的程序都已经给各位分享完了,各位觉得怎么样呢~!
如果有没讲明白的,或者其他感兴趣的,也希望在留言中提出啊,我会解答各位的问题和需求,同时看是否需要出个(五)。
预告!下一个系列会是Scratch版的跳一跳哦,和现在网上有的都不一样哦~!
感谢捧场,下次再见!