Scratch版保卫萝卜(三)路线跟随
原创 徐鹏程 微信公众号:阳光徐来
2020年8月23日
终于有空更新了,今天来分享保卫萝卜中怪物沿着地图路线行进的程序。
就是在整体效果中提到的:怎么让恐龙沿着地图的线路,快乐的奔向萝卜!!
第一步 素食恐龙登场

直接用Scratch角色库自带的恐龙喽,上图的恐龙战队可是光阳同学的大爱。
当然也可以去搜索保卫萝卜素材,好多的说,给一个参考,不保证长期有效哦~!保卫萝卜3素材包
第二步 角色初始化
每类恐龙单独初始化~

注意:变量中,当前-XXX的变量是私有变量啊,就是在新建变量时,选“仅适用于当前角色”,建议从命名上和全局变量区分出来。另外,能用私有变量解决的,不要用全局。

1 怪物速度倍率
用私有变量定义每类怪物的行进速度,会飞的龙自然要快一些,也有利于后面增加游戏难度,这个和原著一致。后面的数值对应的是每个刷新周期移动的像素数。
2 怪物初始位置
利用全局变量“出口X”、“出口Y”,所有怪物都从第一格的地图中心出现。觉得我的黑洞画的有点LOW的,来给我做美工啊::
3 初始化变量
将“怪物编号”变量清零,将“怪物X坐标组”、“怪物Y坐标组”两个列表清空。
有人注意到,这里的怪物X/Y坐标组用的是全局变量,因为这两个列表其他角色会用到哦,下一次分享又会看到他们。
4 为啥隐藏起来呢
各位首席编程导师一看就明白了,主体隐藏了,要用克隆了:)
第三步 克隆角色

让你的恐龙整齐编队,前赴后继的奔向萝卜国王。
当按下空格键开始克隆怪物,如果是多种怪物,也要用同样的开始条件啊。同时这也是地图绘制结束的标志。
1 怪物编号
初始化时将怪物编号清零了,这里从1开始,将每只克隆的怪物进行编号,用处呢,当然是区分每一只克隆体的,简单说就是列表的行数啊。
2 初始化坐标组
这里为每只新生的克隆体初始化了一个坐标,没啥实际用处,就是占位的,马上会被实际位置刷掉。
3 克隆自己
就是克隆自己,厉害了我的龙。
最后一行积木的等待时间,用来调整每类怪物的间距。
注意到第三行积木还有个等待时间,是用来调整每类怪物的出现时间的,黑洞不要太拥挤::
第四步 路线跟随
到本次分享的重点了,克隆出来的怪物,怎么跟随地图的路线呢~!

可以看到这里用了自制积木,所以‘主函数’里面就简单了,先让克隆体显示出来,然后先Y后X,沿着地图的路线前进。
路线长度上,暂时用了个懒办法,地图转折点多的,往后复制就行,我是加到了第10项。这个应该用地图数组的元素个数做循环的,有空改一下::
纵向移动和横向移动的参数,也就是移动的格数,是从地图绘制里面来的,还记得我们上一次分享提到的:

对,就是Y/X向移动两个数组里面的值。
那到底是怎么做的跟随呢,看自制积木里。
1 纵向移动
就是沿Y轴方向移动啊,自制积木这样:

看到嵌套的自制积木了。
为了减少自制积木数量,从地图开始,Y向上下方向就合并在一块积木里,用数值正负来判断。
确定方向后,移动对应的距离。
2 横向移动
X轴方向上的移动,和Y向是一样的:

有经验的首席导师要问了,这么复杂干嘛,两行就解决了:

可是!!
“移动”这个自制积木如果参数赋值为负数的话,会很麻烦,有兴趣的可以试一下改哪边更合适。
3 移动执行

这就是为啥需要传正数参数进来了,为了实现优雅的角色造型切换,处理的有点复杂。
好吧,不去管他,总之移动固定的距离就是了,再优雅的控制好速度。。
关键要注意这个实时记录当前克隆体坐标的,后台数值:

可以看到每一只存在过的克隆体,都会龙过留痕,实时位置和最终状态都会有记录,全寿命周期管理,你猜那几只888是咋了:)
干啥用的呢?给下一次分享的内容用的,Scratch版保卫萝卜(四) 瞄点判断,预告一下。
以下几个小标题内的积木块都和上面的在同一个重复执行里面啊。
3.1 切换角色造型
就是让恐龙动起来。

我用了3步一换造型。这里为啥这么复杂,主要是让不同的怪物动作多样化,而且调试修改方便。
3.2 吃到萝卜

吃到萝卜的恐龙999,呦呦呦,吃完就走。
3.3 吃到子弹

吃到子弹的只能拜拜拜,知道上面的几只888咋了吧::
这里和上面吃到萝卜后的短延时,都是为了同步状态的,不然在Scratch里会有判断BUG。
到这里自制积木的重复执行结束。
本次的分享也到这里吧~!感谢关注!
希望能和更多的首席编程导师一起交流,欢迎分享给你身边正在学习Scratch的小朋友和家长哦~!
下次见::