目的
目的:跳跃是很常用的游戏功能。不少游戏都是通过跳动前进、躲避障碍物,获取得分。这一次我阅读了Scratch上关于跳跃的说明和举例。以此为蓝本,由浅入深,练习各种跳跃运动。
适用对象:适合有一定编程和数学基础的用户,例如一二年级学生。通过之前约10次的练习,一年级学生能够独立完成本课程中多数功能,或者在家长指引下完成练习。
实现方式
本程度使用简单的猫咪角色,同时在屏幕最下方放置一红线,即地板。通常的跳跃是要在一定的物体上才能跳跃,例如地面、某个运动的挡板上。空中的跳跃一般称为飞翔。当然开始的时候,也可以随意跳动,并且跳动的速度完全相同。在现实世界中,人跳起来的时候,因为受到重力的影响,速度会逐渐减小直到为零,然后落下,落下的过程中,速度不断增加,达到地面的时候,停止。除了垂直的跳动以外,还可能是往前跃进的跳动(跳远)。
下面描述几种跳动方式。
一、最简单的跳跃方式
点击数字0,小猫跳动一定的距离,然后停留一小会,落下。上升和下降都是“瞬间位移”的,即立即改变位置。并且在任何地方都可以跳动。
测试这种跳跃方式,然后提出问题:我们的实际跳动果真是如此的吗?是瞬间跳到最高处吗?当然明显不是这样,因此需要继续改进。
二、匀速跳跃
实现往前跳跃,即上前方跳动,并且落下。匀速上升和下降。
程序开始时,将小猫咪移动到左下角,等待跳动。
点击上箭头,小猫跳动往上跳动,跳动过程中,循环16次,每次Y轴增加10,同时X轴增加2。这实现了匀速的上升跳跃,和之前的“瞬间位移”好了一些。让小孩思考人的实际跳跃运动是怎么样的。往前跳跃是小孩想出来的,这比较符合实际。
跳到最高点,可以停留零点几秒,然后开始下降。小孩提出想法,到达最顶端后翻一个跟斗,因此重复执行10次,每次右转36°,即旋转360度。
下降过程和上升过程相同,循环16次,每次Y轴增加-10,同时X轴增加2。开始的时候设置为X轴增加-2,下降过程中,又回到原点了。这不符合常理。小猫在跳动过程中,一直往前走,因此X轴一直都在增加。
小猫往右跳动,快到边缘时重新返回到最左边,否则就跳出屏幕了。这个功能很早就熟练了。
跳动之前和落地之后,更换了一次造型。如果造型合适,能够实现落下后下蹲然后站起的效果。
改进:如果熟练,这里也可以引入变量,例如通过循环次数、单词循环Y轴位移变量,决定跳跃的高度。
三、匀速跳跃2
实现往前跳跃,即上前方跳动,并且落下。匀速上升和下降,但上升和下降的速度不同。
按下数字1,实现跳跃,实现方法同上,仅是下降的时候速度比上升的速度低,差异较大时能感觉到漂浮下降的过程。同时小孩选择了,反向翻跟斗。这个翻跟斗是小孩自己想出来的,做出来以后,让三岁小妹妹玩了玩,引起了一片笑声。
四、从地面上匀速跳跃
功能和第二类似,但增加了地面的判断,只有在地面上才能跳跃,在空中不能跳跃。
增加一条红线的角色,放在屏幕最下方,模拟地面。即小猫只有碰到这条红线才允许跳跃。
点击数字2,同时判断是否碰到某个角色或某个颜色,只有满足这两个条件才能跳跃,否则不能跳跃。在“侦测”中,有碰到某个角色,或碰到某种颜色的指令。
为了测试离开地面后小猫无法跳动,增加上移和下移的操作,按A上移,按Z下移。测试的时候,将按键1的无地板判断的跳跃和按键2带地板判断的跳跃进行比较。
五、加速跳跃(考虑重力)
功能和第二类似,但更改了速度。小猫在上升跳跃过程中,速度逐渐减小,直到速度为零。到达最高点以后,下降,速度逐步加快。因此看起来,就比较符合现实场景了。
为了便于控制,引入了y轴的速度变量。
点击数字3,跳动时,速度设定为15,即每次Y轴增加15,然后Y轴速度增加-0.5.重复执行30次。到达顶部的时候速度已经为零。
到达顶部的时候,停留0.1秒。
下降的时候,将Y的速度增加0.5,即Y坐标的每次增加值为0.5的倍数。实现加速下降的功能。
六、两次连续跳跃(考虑重力)
功能上面带重力的跳跃类似,只是这里实现了连续跳两次的功能,每次的高度相同。
为了便于控制,程序块-积木。在积木中实现跳跃代码,带重力功能。这样能够减少主程序的代码量。
点击数字4,调用一次积木,然后接着再调用一次积木。实现两次跳跃。
greyimg
greyimg
七、多次连续跳跃(考虑重力,高度逐步降低)
功能与上面两次跳跃类似,这里实现了多次跳跃的功能,每次的高度逐步降低。通过这种方式,能够模拟扔皮球的动作。即往上前方抛球,球往前弹起,然后落下,高度逐渐降低。
依然使用了积木块,增加了高度的变量。
greyimg
点击数字5,设定跳跃高度,然后调用一次积木,然后再设置一个跳跃高度,再调用一次积木。这里跳了五次,高度从30,20,10,5,3。如果水平好一些,可以多加一个循环进行处理。
转自:www.china-scratch.com/news/323