小学生系列之六——小球蹦蹦跳

一、功能描述

模拟地球上的自由落体运动:小球从空中掉落,落地后再弹起,弹起后的高度逐渐降低,直至不再弹起。如下面的视频所示。

图1 跳动的球——运动轨迹

二、界面设计

如下图所示,在项目中添加四个组件——按钮、画布、精灵及计时器(在传感器分组中)。

组件的属性设置如下:


按钮:

名称=重新开始

显示文本=重新开始

画布:

宽度、高度=充满

精灵:

x、y坐标=0

图片=ball_30.png(球的直径为30像素)

计时器:

计时间隔=25毫秒(1秒=1000毫秒)


三、认识代码块

1、连加法块

加法块是可扩展块,点击加法块左上角的蓝色标记,即可添加加数,数量不限,如下图所示。

2、代码的两种显示方式

加法块中有两个或多个插槽,需要在这些插槽中填入数字,这些数字被称为“输入项”,输入项的排列方式有两种,如下图所示,左图为内嵌式(数字嵌入在代码块中),右图为外挂式(数字悬挂在代码块的外侧)。这一功能可以调整代码块的宽度或高度,以便在有限的屏幕范围内,尽可能完成地显示代码。在代码块上点击右键,在弹出的菜单中可以切换显示方式。


3、条件语句

下图中是一个有返回值的条件语句,如果条件满足,则返回A(则后面的值),否则,返回B(否则后面的值)。

4、计时器

计时器像钟表一样,会嘀嗒嘀嗒地走动,每“嘀嗒”一次都会触发一次计时事件,两次“嘀嗒”之间的时间长度叫做计时间隔,用毫秒来度量,1秒=1000毫秒。在本例子中,计时间隔设为25毫秒,也就是说,1秒钟会发生40次计时事件。每当发生计时事件时,我们都会重新设置小球的垂直速度及小球的位置(x、y坐标),这样就形成了小球的连续运动。

5、计时器的开启与停止

通过设置计时器组件的启用计时属性,可以控制计时器的工作状态,当启用计时属性设为真时,计时器开始工作(计时),当启用计时属性设为假时,计时器停止工作。

6、与运动相关的变量

垂直速度:小球从最高点开始下落,垂直方向的初始速度为零,此后,在每个计时事件中,速度将有所变化;

水平速度:小球在水平方向的初始速度为0.7,并保持不变;

重力:小球在地球的重力场中下落,重力的作用使小球在垂直方向的速度增大或减小,小球上升时,重力起到减速作用,小球下降时,重力起到加速作用;

空气阻力:小球在运动过程中,受到空气阻力的作用。本例子中假设空气阻力的大小不变,方向与速度方向相反。

可以修改这些变量的值,以便使球的运动更符合人们在现实世界中的体验。

7、小球垂直方向速度的计算

假设向下为速度的正方向,即小球向下运动时,垂直速度>0,小球向上运动时,垂直速度<0。

下面的公式描述了小球在两个时间点上速度的变化,假设时间点1在前,时间点2在后,图中代码块的含义是:

设global垂直速度:设定时间点2小球的垂直速度;

连加号:三个对速度有影响的因素的叠加;

global垂直速度:时间点1小球的垂直速度;

重力:重力的值是不变的,当小球向下运动时,重力使小球的垂直方向加大;当小球向上运动时,重力使小球的速度减小。

条件语句:当小球向下运动时(垂直速度>0),空气阻力的方向向上(与运动方向相反);当小球向上运动时(垂直速度<0),空气阻力的方向向下(同样与运动的方向相反)。阻力与运动方向相反,意味着阻力使小球的速度

8、小球运动的实现

在每个计时事件中,通过改变小球的坐标来实现运动效果,坐标改变的原因是小球的速度;而速度改变的原因是小球受到了两种力的作用——重力及空气阻力(见上图)。

9、当小球落到底时

扮演小球角色的精灵,只能在画布的范围内移动,当它碰到边界时,就会触发“碰到边界”事件。如下图所示,碰到边界事件中携带了一个参数——边界代码,那么何为边界代码呢?

如下图所示,边界代码就是一个数字,这个例子里与两个边界有关,即底边(边界代码=-1)以及右边(边界代码=3)。

10、处理小球的碰到边界事件

如上图所示,如果小球没有碰到右边界,那么它一定是碰到了底边,此时,让它的速度变为负值(速度的大小不变,方向改变);如果碰到右边界,则计时器停止工作。

四、知识点:运动是时间与空间的结合

如果说画布代表空间,那么计时器则代表时间,物体的运动就是物体的空间位置随时间的变化。利用计时器组件,可以创造出复杂的运动效果,模拟各种类型的运动,如匀速、匀加速、匀减速、圆周运动,等等。关于运动的知识要到初、高中的物理课中才开始涉及,不过这并不妨碍我们模拟各类运动,通过修改与运动相关的参数,观察它们对运动效果的影响,这是一种难得的实验体验,即便是在物理实验室中,也难以设计出这样完美的实验。

模拟各类运动也是游戏编程中重要的部分,例如,愤怒的小鸟中,子弹的飞行轨迹就可以用二次方程来模拟。

五、完整代码

六、作业:

1、绘制出小球的运动轨迹,如下图所示。

2、改变小球的水平速度,观察运动轨迹的变化;

3、在水平方向上同样考虑空气阻力,观察运动轨迹变化。

4、为动画配音,当小球撞击地面时,发出咚咚声。

(0)

相关推荐