Scratch编程基础课第十讲:碰到边缘反弹

网友投稿 2019-11-25 11:11

Scratch编程基础课第十讲:碰到边缘反弹

上节课我们使用“重复”指令模块让小猫移动时,当小猫移动到舞台边缘时,小猫将停滞不动的,这时我们想让小猫转个方向来回移动,这时我们一般运用“运动”类型下的“碰到边缘就反弹”指令模块。

Scratch的指令模块“碰到边缘反弹”,其反弹时遵循光线的反射规律--反射角等于入射角。反射角度与角色的方向角之间有如下关系:如果角色的当前方向角为α,当角色碰到的是上下水平边缘反弹后,其方向角为180-α;当角色碰到的是左右水平边缘反弹后,其方向角为-α。利用这个规律,在程序中如果要角色碰到某角色或颜色后反弹时,其反弹后的方向就可以用上面的办法确实,从而使我们的程序中的反弹效果更符合实际情况。

这时我们在脚本程序中加入“碰到边缘就反弹”指令模块,来实现小猫来回的走动。

https://cdn.china-scratch.com/timg/191127/1111345Z6-0.jpg

当我们单击绿旗运行脚本时发现,当小猫运动碰到边缘反弹回来后,图像变成倒立的了,这是什么原因呢?这是因为小猫的旋转方式为“任意旋转”,这时我们可以将角色“小猫”的旋转方式属性改变为“左右翻转”即可,一般我们会在脚本中利用“将旋转方式设为……”指令模块来改变角色的旋转方式。

https://cdn.china-scratch.com/timg/191127/1111343058-1.jpg

我们也可以利用反射定律来实现:当角色碰到的是左右水平边缘反弹后,其反射方向角为-α。我们先用“侦测”中的“碰到舞台边缘”来检测角色是否碰到了边缘,再利用“控制”类型下的“如果……那么”指令模块来确定角色碰到边缘时(条件为真,也可以用是的,对的来理解)就执行那么后面的模块让角色反向,没碰到边缘时什么也不做。我们利用“运动”中的“方向”变量取出角色面向的方向,最后利用“运算”中的“相减”求其相反数。

https://cdn.china-scratch.com/timg/191127/1111345408-2.jpg

--end--

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com