作品简介
今天为大家带来的Scratch作品是《全民打飞机》,这是一款射击类游戏。游戏的目标就是控制自己的飞机发射炮弹,击落更多的敌机。
点击绿旗,运行程序,从舞台上边缘随机出现各种敌机,然后向舞台下方飞去,在舞台下方停着一架自己的飞机,并不停的发射炮弹,将鼠标移到飞机上,就可以使用鼠标来控制飞机的上下左右移动避开敌机,同时发射炮弹击落敌机,每击落一架敌机就得1分,如果被敌机撞上了,游戏结束。
作品效果
Scratch全民打飞机的完整效果如视频所示:
作品解读
Scratch全民打飞机一共使用了4个角色,如图所示:

各角色的功能说明如下:
- 主机:玩家控制的飞机,不停的发射子弹,使用鼠标移动控制其上下左右移动,如果碰到敌机则游戏结束;
- 子弹:从主机发射出来的子弹角色,一直向上运动直到碰到舞台边缘或者敌机消失;
- 敌机:敌人的飞机,有3种不同的造型,从舞台顶部随机位置出现,然后向下运动,直到碰到舞台下边缘或者子弹消失;
- 爆炸:当子弹击中敌机使,出现的爆炸效果。
本作品相对来说还算是比较简单的,在创作的过程中,重点需要注意两个细节:
- 鼠标控制主机角色的移动处理
- 使用爆炸角色实现敌机爆炸效果
接下来,就对这两个问题做一个详细的说明。
1.鼠标控制主机角色的移动处理
让主机角色跟随鼠标移动是一个非常简单的操作,不过如果一开始就跟随鼠标移动,会导致点击绿旗的时候,主机跑到舞台左上方去了,有可能会直接碰到敌机。所以,在本作品中,做了一个简单处理,就是当鼠标第一次碰到主机角色时,才让主机角色跟随鼠标移动,其实现代码如下:

这里巧妙的使用了“等待条件”指令,只需要增加一行代码,作品的效果就大为改观,这就是编程的美妙之处。
2.使用爆炸角色实现敌机爆炸效果
当子弹击中敌机时,敌机爆炸了,爆炸的效果是通过一个新的角色“爆炸”来实现的,这种处理方式在很多作品中都会遇到,比如植物大战僵尸也是这么处理的。
当敌机爆炸时,可以发送一个广播消息,爆炸角色在接收到广播消息时克隆一个爆炸角色,然后移到爆炸位置通过切换造型就可以实现爆炸的效果了。但是,这里有一个关键,就是爆炸角色如何获取碰撞的位置呢?
由于,子弹和敌机都是克隆体,而每个克隆体的位置又各不相同,无法直接在其他角色中获取它们的坐标信息。所以,我们只能在子弹碰到敌机时使用变量将该时刻的位置保存起来,然后在爆炸角色中使用。
首先,在敌机角色中,编写代码如下:

这样,就将爆炸点的位置信息保存到变量“敌机x坐标”和“敌机y坐标”中了。
其次,在爆炸角色中,编写代码如下:

暂无评论内容