初级篇——小猫的降噪耳机

【疑惑篇】

点击绿旗按钮,车辆在马路移动,发出街道的噪音。点击小猫,带上降噪耳机,噪音消失。再点击小猫,摘下耳机,噪音恢复。

降噪耳机可以通过绘制工具画出。

噪音可以通过手机录音或搜索引擎搜索下载。

注意小猫与汽车之间的前后关系。

视频演示open in new window

亲自操作open in new window

想一想: 可以有几种方式实现?尝试调整耳机的降噪功效?

【线索篇】

案例分析

它们发生的场景是什么?

每个场景中有哪些角色?

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

敞篷车

  1. 点击绿旗,从不同位置出发,向右移动(速度不同)
  2. 移出舞台右侧后,回到舞台左侧
  3. 向右移动(速度不同)
  4. 重复2~3步

小猫

  1. 点击绿旗按钮,切换未带耳机造型,并播放噪音
  2. 点击小猫,切换造型
  3. 如果切换后是带耳机造型,那么停止播放噪音,否则播放噪音

积木提示

当绿旗被点击

当角色被点击

移动(10)步

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

在(1)秒内滑行到x:(0) y:(0)

将x坐标增加(10)

x坐标

换成([造型1])造型

下一个造型

移到最[前面]

播放声音([喵])

停止所有声音

重复执行

造型[编号]

([舞台])的[背景编号]

如果<>那么

如果<>那么否则

大于

小于

等于

注意事项

  1. 不同造型有不同编号
  2. 三个角色之间的前后层级关系。

【解决篇】

不知道你有没有戴过主动降噪耳机,当你在一个很吵的环境时,戴上主动降噪耳机瞬间世界就变安静了。

首先,还是新建一个项目,把需要的背景添加进来,这次用到了Night City With Street。

接着,添加用到的角色。默认的小猫已经有了,还需要添加两辆敞篷车。

注意观察,小猫除了原本的造型之外,还多了一个戴上耳机的造型,造型从哪来?最简单的方式可以自己画一个。

选中小猫,复制一个造型1,然后利用绘制工具里面的圆形,在小猫耳朵上画两个耳机罩,再用直线或者画笔将它们连接起来。你还可以在上面选择自己喜欢的耳机颜色。多余的造型2没有用到可以删掉。

除了造型之外,这个案例中还有一个重要的东西,噪音。应该由谁来播放它呢?想一想,因为每次小猫在更换造型时,声音就会被停止或者播放,所以可以考虑让小猫来播放噪音。

同样的,你可以从网上搜索现成的声音文件,或者加入我的知识星球获取游戏素材上传上去。

第三步,开始使用指令积木来完成动画。

敞篷车

首先来实现敞篷车的功能,经过之前的练习,相信你一定很熟悉移动积木的用法了。尝试着使用不同的方式来实现它们。

1.点击绿旗,从不同位置出发,向右移动(速度不同)

当绿旗被点击积木,跟着移到x:(0) y:(0)积木设置角色的初始位置。

接着,使用在(1)秒内滑行到x:(0) y:(0)积木向右移动,根据时间控制速度。

2.移出舞台右侧后,回到舞台左侧

使用移到x:(0) y:(0)积木回到舞台左侧。

3.向右移动(速度不同)

使用在(1)秒内滑行到x:(0) y:(0)积木向右移动。

4.重复2~3步

使用重复执行积木重复2~3步。

除了上面的方式之外,还可以使用移动(10)步积木和将x坐标增加(10)积木来实现,它们都可以通过更改角色的x坐标来让角色向右移动。两个积木的参数可以控制角色移动的速度。

点击绿旗按钮测试,你会遇到一个问题。车辆移动到舞台右侧后就会停止,你需要使用移到x:(0) y:(0)积木让它回到舞台左侧。

应该什么时候让它回去呢?是不是当它移动到的舞台的最右侧。继续问自己,如何判断它到了舞台最右侧?别忘了,需要确定角色位置时,立马想到利用坐标。与左右方向相关的坐标是哪个?是不是x坐标。舞台最右侧的x坐标值是多少?是不是240。

现在你的问题就变成了,如果角色的x坐标大于240,就使用移到x:(0) y:(0)积木让它回到舞台左侧。

如何实现?

在之前的案例中你已经学习了两种指令的执行方式,顺序执行和重复执行。在控制分类中有这样两个积木,如果<>那么积木和如果<>那么否则积木。它们就是你这个案例要学习的第三种指令的执行方式,条件分支。

什么意思呢?

想象一下,你换好鞋想出门去楼下玩。现在你有两种下楼的方式,一种是坐电梯,一种是走楼梯,每次下楼时你都只能选择其中一种。因为电梯使用的年限很长,所以有时会发生故障,这时你就需要进行判断,看看电梯是好还是坏。如果电梯坏了,那么你就走楼梯,否则你就坐电梯。

现在你就可以使用Scratch写一个下楼的程序,使用如果<>那么否则积木帮助你进行条件判断,让你选择其中一种指令来执行。

注意观察,它的参数是一个菱形,里面需要放入菱形积木作为参数。菱形积木使用时会返回一个布尔值(true或者false),当返回为true时,表示满足条件,选择执行那么后面的指令。当返回为false时,表示不满足条件,选择执行否则后面的指令。

另一个如果<>那么积木和它很类似,不过它不需要在那么和否则中间二选一,只考虑某些指令在满足条件时才去执行它。

例如,你去超市购物,准备了一张购物清单,其中有一项是你想买一斤樱桃,但是你不确定超市有没有。这时,你的程序可以这样写,如果有樱桃,那么就买一斤。

现在回到之前的问题,如果角色的x坐标大于240,就使用移到x:(0) y:(0)积木让它回到舞台左侧。

你现在需要判断角色的x坐标有没有大于240?

角色的x坐标怎么获得?使用运动分类中的x坐标积木。

如何通过大于或小于进行比较?使用运算分类中的大于积木或小于积木。

写好的判断就像下面这样。

最后还有一个问题,这段代码应该放在哪里?

想象一下你就坐在运行的敞篷车里面,你怎么知道自己有没有到舞台右侧?是不是每当汽车移动一次,就需要判断一次。 在车来到舞台右侧之前的每次判断,你的x坐标都小于240,所以不会执行条件分支中的指令,车会继续向右移动。直到车来到舞台右侧边缘,这一次的判断x坐标大于240,那么就会执行条件分支中的指令,将车移动到(x:-240,y:-67)的位置,接着继续开始向右移动。

小猫

1.点击绿旗按钮,切换未带耳机造型,并播放噪音

完成了敞篷车的功能,再来看看小猫的。第一步很简单,使用当绿旗被点击积木后,使用换成([造型1])造型积木将它的造型切换成未带耳机的造型,然后使用播放声音([喵])积木或者播放声音([喵])等待播完积木播放上传的噪音。

2.点击小猫,切换造型

这一步需要在小猫被鼠标点击后,切换造型。使用当角色被点击积木和下一个造型积木。需要注意的是,当小猫只有两个造型时才能使用下一个造型积木。如果你之前忘记把小猫多余的造型2删掉,当你点击小猫时,它就会在3种造型之间进行切换。

3.如果切换后是带耳机造型,那么停止播放噪音,否则播放噪音

看到如果..那么..否则是不是立马可以想到使用如果<>那么否则积木了。

条件判断积木的用法本身很简单,难点在于你需要思考什么场景下去使用它,以及使用它时,进行判断的条件是什么?

因为小猫的造型会不断变化,并且每种造型只会对应一种声音情况,类似于下楼方式的二选一,这里的2个选择为有噪音和没噪音。

确定好了需要使用条件分支进行二选一,接着来考虑二选一的判断条件是什么?

在这里是不是小猫当前显示的造型。如果是带耳机的造型,那么没有噪音,否则就有噪音。

怎么知道小猫当前的造型有没有带耳机?还记不记得每个造型都有一个编号和名称,只需要判断小猫当前的造型编号或名称是什么就可以了。

使用外观分类的造型[编号]积木就可以获得小猫当前的造型编号或名称。在利用运算分类的等于积木来进行比较。

如果造型编号=2或者造型名称=造型3,那么没有噪音,否则播放噪音。

如何才能没有噪音?

使用声音分类的停止所有声音积木,停止正在播放的噪音就可以了。

这样小猫的功能就做完了。

在你做的过程中可能会出现这样一种情况。因为小猫和车前后的位置不同,它们之间会有层级关系。正常情况下,当两辆车穿过小猫时,小猫会挡住它们。两辆车之间,绿色的车又会挡住紫色的车。

如果你在测试的过程中发现它们之间的前后关系是错乱的,应该如何处理?

一种简单的方式是用鼠标直接拖动舞台上的角色,这个被拖动的角色就会出现在最前面。你可以先拖动绿色敞篷车,它就会出现在最前面,挡住小猫和紫色敞篷车。接着,再拖动小猫,它又会出现在最前面,挡住另外两辆车。

另一种方式是使用移到最[前面]积木设置它们的前后位置。

在小猫的指令串中使用移到最[前面]积木,参数选择前面。

在紫色敞篷车的指令串中使用移到最[前面]积木,参数选择后面。

最后,再留给你一个思考题。如果你在最开始没有把小猫多余的造型删掉,小猫保留有三个造型,应该如何实现这个动画?

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

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

Last Updated:
Contributors: lanheixingkong