使用Scratch制作弹球游戏(5)

1、道具的生成、消失及其效果

前面我们已经把主要部件都搭建的差不多了,接下来就是扩展性的奖励道具了,道具执行的动作并不多,需要的积木也不多,但是因为道具是在小球击中障碍物后随机掉落,那么如何设计道具掉落的随机位置,同时保证道具不会重复掉落呢?这个问题可能会难倒大家,我猜想可能会有一部分人会陷入一个思维误区,那就是在每次发射小球前都要事先设定好道具的随机位置,这个随机位置还要和障碍物重合,并被障碍物盖在上面或者隐藏,其实这也没有什么不对的,比较符合大家的常识认知,但是在程序里按照这样的思路编写的话就会很麻烦。所以这里我们不妨换一种思路,道具的随机出现我们借助变量以及该变量的随机数判定道具的掉落,我们事先隐藏三种障碍物,新增一个变量,将这一变量放在障碍物的编辑栏里,使得每次障碍物被球碰到后都会生成一个区间内的随机数,我们设定随机数若为1,那就掉落“挡板level up”这一道具,若为2,那就掉落“得分+5”,为3掉落“生命+1”,这里随机数的取值区间越大,那么随机到1、2、3的概率就越低,也就是触发道具的概率就越低,所以这里需要取一个适当的区间。
使用Scratch制作弹球游戏(5)

三个道具的积木基本差不多,这里就以“挡板level up”的积木为例,另外两个可以直接将这段积木复制过去,修改下图圈出的数值即可。
道具除了增加游戏的趣味性外,也是一种奖励,所以其移动路线比较单一,便于玩家判断,这里我直接让其做垂直地面的匀速直线运动。当然,道具也不是一直移动的,所以设定了一定的条件,例如调出屏幕外、被挡板接住、没接住小球导致的生命减少,这时候道具都会消失,也就是隐藏。
后面又判定一次等待生命减少=1是因为我希望在生命减少后能够重置三个奖励道具的数量,所以又套了一个大循环来达到重置的效果。
使用Scratch制作弹球游戏(5)

道具出现后做垂直地面的匀速直线运动就有可能被玩家控制挡板接住,从而触发相应奖励。
使用Scratch制作弹球游戏(5)

这里就用到了我们之前设计的挡板的两个造型,于是挡板在碰到“挡板level up”道具后变长了,更便于接住小球,如果没有接住小球,那么挡板就会恢复原本的长度,也就是又变成挡板造型,再通过重复执行积木让他们在一局游戏中能够被多次触发。

2、关卡的增加

前面我们增加了速度这一变量,就是为了便于随着关卡的增加来增加小球和挡板的移动速度,同时也可以增加障碍物的数量,这样通过简单的循环就能够制作出难度逐渐增加的关卡。
使用Scratch制作弹球游戏(5)

上图圈出的重复次数,也就是障碍物的行数就借助速度这一变量以及简单的数学运算便能够自动随着关卡数而改变。

3、背景的变化及变量的初始化

背景部分的编辑栏内的积木组合主要是为了控制背景图案随着游戏的进程也就是障碍物数量和关卡数的改变而改变以及各种变量的初始化、显示、隐藏。
使用Scratch制作弹球游戏(5)

4、添加声音

声音部分就比较简单了,前面已经将游戏搭建完成,游戏已经能够正常游玩,但是稍显枯燥,所以我们在关键的位置加上碰撞、点击音效,并为游戏添加背景音乐。

1.球

在球的编辑栏里,可以在几个涉及到碰撞以及未接住球的几个“如果”积木中插入合适的声音,这些声音和角色一样,可以使用软件自带的声音库、可以自己录入、也可以导入音频文件,支持wav和mp3格式。下图只截取了部分积木作为插入声音位置的参考。
使用Scratch制作弹球游戏(5)

2.挡板

挡板部分插入的是与三个奖励道具接触的声音。
使用Scratch制作弹球游戏(5)

3.按钮

为按钮添加点击音效
使用Scratch制作弹球游戏(5)

4.背景

背景音乐需要注意的是:如果玩家停留在同一背景的时间较长,而音乐的时间是有限的,肯定会有播完的时候,所以需要将音乐循环播放,但在更换背景音乐的时候又需要及时停止,所以我们对背景音乐加上重复执行积木块,并给定结束重复执行的条件,防止几个背景音乐混在一起。
使用Scratch制作弹球游戏(5)

5、结语

至此,这一弹球游戏就完成了,关卡方面,我并没有设计出过多的变化,内容相对单一,大家如果感兴趣的话可以将关卡重新设计以下,进一步增加游戏的趣味性。

使用Scratch制作弹球游戏(5)