中级篇——魔法棒

【疑惑篇】

点击绿旗按钮,魔法棒会不断喷出小星星,使用鼠标可以移动魔法棒。

视频演示open in new window

亲自操作open in new window

【线索篇】

案例分析

它们发生的场景是什么?

每个场景中有哪些角色?

每个场景中的每个角色在做什么?

  1. 点击绿旗按钮,循环播放背景音乐。
  2. 移动鼠标,魔法棒自动跟随鼠标移动。
  3. 从魔法棒的五角星中间不断喷出小星星。

积木提示

当绿旗被点击

移动(10)步

移到x:(0) y:(0)

移到([随机位置])

面向(90)方向

将y坐标增加(10)

换成([造型1])造型

将大小设为(100)

将[颜色]特效增加(25)

将[颜色]特效设定为(0)

播放声音([喵])等待播完

重复执行(10)次

重复执行

当作为克隆体启动时

克隆[自己]

删除此克隆体

鼠标的x坐标

鼠标的y坐标

加法

减法

在(1)和(10)之间取随机数

注意事项

  1. 案例中有几个角色?

【解决篇】

一根魔法棒可以跟随鼠标移动,从魔法棒中还能不断喷出小星星,看上去似乎很容易就能实现。

通过这个案例,我将带你学习中级篇中另外一个重要的内容,克隆体。

第一步,先把用到的背景Hearts添加进来。

第二步,添加角色,这也是本案例的难点。请你想一想在这个案例中总共有多少角色?

或许你会说有一根魔法棒和很多的小星星,在这里为了简化制作过程,我们先考虑只有一根魔法棒和一个小星星的情况。

在Scratch中并没有魔法棒,你可以添加两个星星角色,将其中一个下面画出一个棒子的形状。

第三步,使用指令积木实现程序。

1. 点击绿旗按钮,循环播放背景音乐。

添加背景音乐相信你已经很熟悉了,先上传自己喜欢的音乐,然后使用重复执行积木和播放声音([喵])等待播完积木让它循环播放。

2. 移动鼠标,魔法棒自动跟随鼠标移动。

又是一个熟悉的功能,还记不记得小狗追星星中我们是如何让星星跟随鼠标移动的?

你可以像这样实现。

还可以像这样实现。

点击绿旗按钮进行测试,现在魔法棒已经可以跟随鼠标移动,不过有个小问题。想象一下我们的鼠标就是拿着魔法棒的手,现在我们的手是拿着魔法棒顶部的星星在动,能不能变成让下面的棒子部分跟随鼠标移动?

在这里有两种调整方法。

第一种方法修改星星的坐标点。

还记不记得角色在舞台上的位置是由造型中的坐标点所决定。星星角色默认的坐标点在星星的中间,所以当你将它移到鼠标指针位置时,是星星的中间与鼠标重合。现在只需要将坐标点的位置往下移,让坐标点与棒子的部分重合就可以了。

第二种方法,调整星星移动后的位置。

现在当你把星星移动到鼠标指针位置时,鼠标正好与星星的中间重合。如何想要棒子部分与星星重合,是不是只需要将角色再往上移动就可以了。如何将角色往上移动?每次将它移到鼠标指针位置后,再增加它的y坐标值。

在这里我推荐你使用第二种方法,原因在下一步中就会知道。

3. 从魔法棒的五角星中间不断喷出小星星。

这一步中为了简化步骤,我们先只添加了一个小星星的角色。仔细观察一下动画中的小星星做了哪些事情?

首先,角色默认的大小太大了,需要使用将大小设为(100)积木将它缩小。

接着,小星星会从魔法棒星星的中间飞出去,所以你需要把先它移动到魔法棒星星的位置。

如何移动呢?是不是和上一步一样。当你在上一步中使用第二种方法调整魔法棒的位置后,魔法棒的坐标点还是保持在星星的中间,这时只要使用使用移到([随机位置])积木,就可以让小星星移动到魔法棒的星星中间。

如果你在上一步中使用的是第一种方法,那此时你就要重新计算魔法棒星星中间的坐标值,然后将小星星移动过去。

接着,从魔法棒中喷出的小星星有各种颜色,你可能会想到为角色增加不同颜色的造型进行选择。除了这种方法之外,还有一种简单的方法,可以利用将[颜色]特效设定为(0)积木修改它的颜色。具体修改成多少呢?你可以使用在(1)和(10)之间取随机数积木让它随意选择一个颜色值。颜色特效的取值范围是0~200。

接下来,要让小星星喷出去了。如何喷的?实际上就是让小星星向着一个随机方向移动一段距离。

随机方向使用面向(90)方向积木和在(1)和(10)之间取随机数积木确定。

移动一段距离是不是类似于消灭虫子1中虫子爬行一段距离,使用重复执行(10)次积木和移动(10)步积木实现。

注意观察,小星星在移动的过程中,会逐渐消失,这是如何实现的?其实很简单,只需要在它移动的过程中,使用将[颜色]特效增加(25)积木增加它的虚像或者亮度,小星星看上去就像慢慢消失。

点击绿旗按钮进行测试,现在小星星已经可以正常的从魔法棒顶部喷出去,但是它只会喷一次。

你可以给它增加一个重复执行积木,这样就能一直不停的喷出去。别忘了,因为每次喷出去时它的特效都会被修改,所以在循环最开始的地方,要将它已存在的图形特效清除掉。

既然已经完成了一个小星星的角色,其他的小星星是不是和它的操作一模一样,你可以在角色列表中使用“复制”功能,复制出很多一样的小星星角色。具体需要多少呢?那就由你自己来决定。

可能你会想,这样做好麻烦呀,万一你要对小星星做一点修改,例如现在所有的小星星都是同时向外喷出,如果你想让他们能够交错喷出,就不得不把全部小星星角色都增加一个随机的等待时间。想一想这个过程就会觉得头大。有没有什么简单的方法来解决这个问题?

要解决这个问题就要用到Scratch中的一个重要功能,克隆体

你已经知道,在Scratch中你可以添加不同的角色在舞台中,然后利用指令积木来控制它们完成不同的任务。

在控制分类中有一个积木叫做克隆[自己],它有什么作用呢?当你需要使用许多相同的角色时,使用克隆[自己]积木就可以在舞台中创造一个所选角色的克隆体。

例如,原本在舞台上有一种小猫。

当你点击一次克隆[自己]积木,在原来小猫的位置就会多出一个一模一样的角色,它叫做小猫的克隆体。

你同样可以使用指令积木让它移动,修改它的大小、颜色等等。具体如何做呢?每当使用克隆[自己]积木创造一个新的克隆体时,当作为克隆体启动时事件积木就会被启动。此时,你可以将其他积木块拼接在它后面,操作这个新的克隆体。

回到案例中,现在我们有许多一样的小星星,它们做的操作也相同,因此我们可以将它们作为克隆体来操作。

点击绿旗按钮后,我们不用在控制小星星的原始角色,只需要让它重复不停的克隆自己,创造出自己的克隆体。

接着,当克隆体启动时,我们只需要让它们完成之前由原始角色完成的操作即可。每个克隆体出来后,都会调整自己的大小,改变自己的颜色,然后从魔法棒的位置随机向外喷出。

在这里需要特别注意一件事,Scratch中的克隆体数量是有限制的,一个作品最多只能创造300个克隆体。所以每个克隆体的任务完成以后,一定要记得使用删除此克隆体积木将它从舞台中删除。

你可以自己尝试一下,不添加删除此克隆体积木会出现什么情况?当舞台中存在300个克隆体后,就不会再有新的克隆体出现。

点击绿旗按钮进行测试,现在只使用一个小星星角色的情况下,已经能让魔法棒不停地喷出许多小星星。

仔细观察舞台,你可能会发现一个落单的小星星,它是哪来的?没错,它就是我们的原始角色。

通常情况下,当我们使用克隆体时,就不在使用原始角色,所以可以点击绿旗后将它隐藏起来。可是如此一来,当它被克隆时,新生成的克隆体也会和它一样是隐藏状态。因此,我们需要在当作为克隆体启动时积木后面重新将克隆体显示出来。

目前为止,似乎我们已经完成了魔法棒的制作。现在我想在帮你把难度升级,既然我们的魔法棒本身也是利用星星角色修改的,那你能不能就只使用一个角色来完成这个案例呢?

在你继续往下看之前,暂停一下,自己尝试着做一做。

其实要使用一个角色来实现也不难。现在只有一个角色,它既要作为魔法棒,又要作为小星星,所以需要让它拥有两种不同的造型。为魔法棒角色添加星星造型。

接下来,魔法棒除了需要跟随鼠标移动之外,还需要像小星星角色一样不停的克隆自己。

被克隆出来的魔法棒需求做什么事呢?是不是只需要将小星星角色当作为克隆体启动时的指令串复制给它就行。

在这里需要注意的是,魔法棒被克隆出来以后的造型还是魔法棒,所以首先需要将它的造型换成小星星。而克隆体被克隆出来的位置和原始角色本身就相同,所以就不再需要移到([随机位置])积木。

经过简单的改动之后,只使用了一个角色,你就完成了魔法棒的功能。

克隆体是Scratch中非常重要也比较难的功能之一,我在今后的案例中会带你经常使用它,以便帮你尽快掌握它的用法。

想看更多学习案例,欢迎点击查看《Scratch 3学习手册》open in new window

想要获取所有案例源码和素材,以及获得我对你在学习中所遇问题的一对一解答,欢迎加入石头解忧杂货店

Last Updated:
Contributors: lanheixingkong