少儿编程Scratch3.0教程——扩展篇(视频侦测)(文字版)

上节课学完了扩展模块中的文字朗读和翻译,这节课我们接着来学习另外一个扩展模块,视频侦测。视频侦测积木可以利用你电脑上面的摄像头,来侦测画面中物体的运动量和运动方向。


这篇文章主要分为2个部分:

1、使用视频侦测

2、改编谷歌小恐龙游戏


第一,使用视频侦测


和之前的扩展积木一样,要使用视频侦测扩展模块,你首先要把它添加进来。因为要使用你电脑上的摄像头进行侦测,所以当你第一次选择这个模块时,可能会出现一个系统弹窗,询问你是否允许Scratch使用摄像头,你要允许之后才能正常使用该模块。


添加进来之后,你会看见在自制积木下面多了一个视频侦测分类,它的里面总共有4个积木块。



第一个需要使用的是...摄像头积木,这里面有三个选项,关闭开启镜像开启



当你选择开启摄像头时,舞台背景会变成摄像头拍摄到的画面,此时的你如果正坐在电脑摄像头前,就会成为舞台背景的一部分。



当你选择镜像开启摄像头时,舞台中的画面就会像在镜子中一样左右颠倒。如果你用手在摄像头前划过,你会发现舞台中手的移动方向和真实的方向也是相反的。当你想给自己的运动游戏增加难度时,就可以考虑使用它。



当你选择关闭摄像头时,摄像头就会停止拍摄,舞台的背景也会回到原来的模样。


当你打开摄像头之后,你还可以使用将视频透明度设为...积木来调整视频画面的透明度。设置为0时,背景中的视频画面最清晰,当数字变大时,画面会开始变的透明,当数字为100时,视频画面会全部消失。





接下来,就是最重要的相对于...的视频...积木。第一个选项框可以选择角色舞台,第二个选项框可以选择运动方向。使用这个积木就可以侦测到摄像头中物体的运动量和运动方向。




当你选择运动时,只要有物体在摄像头中移动,这个积木就会返回一个数字。背景中移动的物体和幅度越大,返回的数字就越大。整个画面如果是完全禁止的,它将会返回0。


注意观察下面视频中我的身体移动时,最大值和运动量两个变量的变化情况。



当你选择方向时,它会根据物体移动的方向返回一个数字。这里的数字与面向...方向积木中所填的数字类似,当物体向上移动时,返回的数字接近0,向右移动时,返回的数字接近90,向下移动时,返回的数字接近180,向左移动时,返回的数字接近-90。



除了可以在第二个选项框中选择运动和方向,你还可以在第一个选项框中选中角色或者背景。它们的区别是,当你选择背景时,会侦测整个背景画面中的物体是否在运动,而选择角色时,只会侦测与角色重合部分的物体是否在运动。


注意观察下面视频中,我的手碰到角色和没有碰到角色时,最大值和运动量两个变量的变化情况。



当你在使用时可能会发现,视频侦测的灵敏度很高,那怕你只是非常微小的移动,相对于...的视频...积木也会返回一个大于0的数字。因此,当你希望它不要太灵敏时,就可以使用当视频运动 > ...积木,看着它的形状,你一定能猜出来它也是一个事件积木吧。只有当你的运动量大于某个数字时,才会触发这个事件,从而避免因为视频侦测太灵敏,导致你的游戏无法正常运行。



除了使用这个事件积木之外,你还能利用循环、如果那么和运算积木来配合使用,达到相同的效果。它们的区别就类似于,事件积木中对按键的侦测,与利用循环和如果那么积木对按键的侦测的区别。



如果你忘记了它们之间具体有什么不同,可以重新看看少儿编程Scratch3.0教程——05 事件积木(基础知识)少儿编程Scratch3.0教程——07 侦测积木(基础知识)这两课的内容。


第二,改编谷歌小恐龙游戏


介绍完了视频侦测积木的用法,接下来我们就利用它来改编少儿编程Scratch3.0教程——10 自制积木(项目练习)中所完成的小游戏,谷歌小恐龙。如果你还没有看过,建议你先跟着教程把之前的游戏做一遍。


之前的谷歌小恐龙游戏中,我们是通过空格键来控制小恐龙跳跃和开始游戏。程序猿因为大部分时间都坐在电脑前对着屏幕,导致颈椎经常会出现问题。现在,我们就利用视频侦测积木,通过扭动脖子来控制游戏。


改编的地方有两处。第一,点击绿旗后,我们通过向左扭头来开始游戏。第二,开始游戏后,我们通过向上抬头来控制小恐龙跳跃。


好了,既然要通过向左和向上扭头来玩游戏,那你需要考虑的第一个问题就是,如何来判断你是否在向左和向上扭头?


暂停一下,打开之前做好的谷歌小恐龙游戏,自己先来尝试完成它。


我们在第一部分已经说过,可以通过相对于舞台的视频方向积木返回的数字来判断视频中物体的移动方向。数字接近-90就是向左移动,数字接近0就是向上移动。需要注意的是,它返回来的数字很少会刚好等于-90或者0,所以最好将数字放在某一个区间范围内进行判断。


例如,当返回值 < -70并且返回值 > -110时,就判断为向左扭头,当返回值 > -20并且返回值 < 20时,就判断为在向上抬头。当然这里举例的区间并不是固定的,你需要在开发游戏时亲自测试,选择一个合适的区间值。



接下来,我们就一起来看看需要如何进行修改。在这之前,先来看看原来的小恐龙代码长什么样。



之前的游戏是通过当按下空格键积木做事件监听,每当按下一次就执行一次跳跃,并且在跳跃积木中去启动游戏,那现在需要修改的也就是这个事件积木了。需要将它替换为视频侦测积木的返回值,当返回值在上面说的判断区间时,去执行启动游戏和跳跃积木就可以了。



这里已经将跳跃和启动游戏分开执行,所以可以把原来跳跃里面的启动游戏积木删除掉。



接下来,需要考虑的是,选用什么事件开始对视频方向进行侦测。这里可以有两种选择,一种选择是使用当视频运动 > ...积木,在里面设置一个合适的运动量大小,这样既可以避免微小动作触发事件,也可以在该事件下面直接执行上面的方向侦测。但是跟其他事件积木一样,因为它的侦测频率比较慢,可能会出现连续扭头不能触发事件的情况。


第二种方式,使用当绿旗被点击事件,然后将上面的方向侦测放进循环中。为了避免微小动作触发方向判断,你还可以在方向判断外层加上一个运动量的判断,当运动量大于某个数字时,才去执行方向侦测。



最后,将原来的当按下空格键事件删除掉,谷歌小恐龙就改编完了,完整的代码变成下面这样。



除了上面的改编方式,你还可以根据抬头的运动量来控制小恐龙跳跃的高度,这个功能就留给你自己来完成了。


同样的,如果你在学习过程中遇到问题无法解决,你可以扫码关注我的微信公众号“梦世界”给我留言,我会对你的提问一一进行解答。



Talk is cheap. Show me the code...





经过几个月的准备,线下的石头课堂终于开始试听了。如果你看完之前的Scratch课程,对少儿编程感兴趣,正好又住在贵阳市,欢迎前来试听。


课程内容分为两个年龄段。


幼儿启蒙(5-8岁),主要通过学习ScratchJR,让小朋友熟悉图形化编程环境,激发学习兴趣,掌握基本的问题分解意识。


少儿编程(7-14岁),主要通过学习Scratch,掌握基础编程知识,提高编程思维能力,课程结束后能独立完成Scratch动画和游戏制作。



如果你没有住在贵阳,我很快也将开办线上的石头课堂,届时欢迎你的加入。另外,如果你有Web应用系统、手机APP、微信小程序等软件开发需求,也欢迎与我联系。期待能与你共同进步。。。

0条留言

留言