塔防P1 地图绘制和敌人行动
塔防游戏 第一集
本集实现了以下几个功能:
- 地图的绘制
- 敌人的绘制,移动逻辑,消失逻辑
地图的绘制
从零开始构建Scratch项目,首先用一条直线绘制道路大致的走向,然后用变形工具将道路变成需要的样子。

绘制完道路后,绘制作为草地的矩形,注意应该在道路下方。
然后复制道路,添加一个角色作为之后敌人移动根据的路径。注意之后如果有修改道路的需要,要把背景和路线一同修改。这条路线在游戏中是隐藏的,但是为了之后参考的时候方便,应该选择比较对比较高,比较明显的颜色。

路线在刚开始创建的时候并不是在屏幕中间和道路重合的,可以在代码中命令它初始化到屏幕中心位置。

角色的绘制,移动和消失
新建或者导入一个角色。我们使用一对“触角”触碰路线的方式完成敌人的转向,需要在角色的行进方向(右边)绘制两个红色和蓝色的方块。

让敌人在路线的起点,面向前进方向。设定两个私有变量移动速度和转弯速度,在初始化时赋值,在游戏开始点击绿旗时开始向前移动。移动中我们可以发现,前面的蓝色触角接触道路中间的白线,说明敌人需要左转;红色触角接触白线,需要进行右转。我们用两个判断来完成触角接触道路中线的判定,并且命令它转向。

测试时发现:如果地图中有比较急的弯道,敌人可能会冲出道路。如果出现这种情况,需要在背景地图和角色路线中同时修改道路,让弯道变得更加平缓。也可以让转向速度更快,看看能否改善情况。
此时我们还发现一个问题,我们是不喜欢道路中间的白线和敌人前面的“触角”出现在游戏里的,但如果直接隐藏掉白线或者触角,会导致判定失效影响敌人行动。
对于中间的白线,不能让他隐藏,否则它会被程序无视导致判定中不存在这条白线。我们在代码中命令它虚化,这样我们在画面上看不到它,但是它依然存在着并且正常的参与判定。

对于敌人的两个触角,我们同样不希望在游戏里见到。我们在敌人角色中新建两个造型,但是这两个造型中只单独存放红蓝两个触角。

在角色开始移动时,默认给敌人换成正常的造型。在移动判定过程中,短暂的切换为两个触角并分别判定它们是否与道路接触。这里的道路接触判定也需要修改,因为画面中的道路中间不存在白色了,就用是否接触道路这个角色来判定。判定的逻辑和之前一样,道路碰到触角就意味着该向一个方向转向了。在判定完成后,切换回角色正常的形象。因为判断的过程很快,所以在我们看来敌人的形象还是正常的。

我这里给敌人做了个简单的小动画,如果敌人形象是固定的,不需要最后的判断直接放上敌人的正常造型就可以了。
在游戏过程中,我们不仅需要一个敌人行动,需要多个敌人来同时行动。我们把一个敌人作为“母体”,它在起点隐藏起来,根据我们设定的数量和时间间隔“克隆”敌人,这些克隆体显示出来作为关卡中冲击防线的敌人。

最后由于Scratch的克隆体数量有上限,过多的对象也会影响游戏运行时的性能,所以我们要求克隆体在碰撞地图边缘时自行销毁。由于敌人在出生时也可能碰撞地图边缘,所以在开始时我们为他们设置一段“无敌时间”再进行判断。

总结
第一节课我们绘制了地图和道路,创建了敌人并给了他行动逻辑,为之后的游戏打下了坚实的基础。这次我们学到的知识有:
- 道路和敌人的绘制和变形微调;
- 用“触角”触碰道路中线的方式规划角色行动路径,并在画面中优化使得不影响游戏;
- 克隆指定数量的敌人,并要求它们触碰边界时销毁。

浙公网安备 33010602011771号