初级篇——小猫的降噪耳机
【疑惑篇】
点击绿旗按钮,车辆在马路移动,发出街道的噪音。点击小猫,带上降噪耳机,噪音消失。再点击小猫,摘下耳机,噪音恢复。
降噪耳机可以通过绘制工具画出。
噪音可以通过手机录音或搜索引擎搜索下载。
注意小猫与汽车之间的前后关系。
想一想: 可以有几种方式实现?尝试调整耳机的降噪功效?
【线索篇】
案例分析
它们发生的场景是什么?
每个场景中有哪些角色?
每个场景中的每个角色在做什么?
敞篷车
- 点击绿旗,从不同位置出发,向右移动(速度不同)
- 移出舞台右侧后,回到舞台左侧
- 向右移动(速度不同)
- 重复2~3步
小猫
- 点击绿旗按钮,切换未带耳机造型,并播放噪音
- 点击小猫,切换造型
- 如果切换后是带耳机造型,那么停止播放噪音,否则播放噪音
积木提示
注意事项
- 不同造型有不同编号
- 三个角色之间的前后层级关系。
【解决篇】
不知道你有没有戴过主动降噪耳机,当你在一个很吵的环境时,戴上主动降噪耳机瞬间世界就变安静了。
首先,还是新建一个项目,把需要的背景添加进来,这次用到了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
想要获取所有案例源码和素材,以及获得我对你在学习中所遇问题的一对一解答,欢迎加入石头解忧杂货店。