Scratch编程教程-模拟重力

模拟重力
在Scratch中模拟重力或至少模拟重力效应可能比较困难,但由于Scratch中的三角函数模块,这是可能的。
提示:您应该根据需要调整本教程中显示的脚本,以适应您的项目。
使用三角函数创建重力
本节旨在教您如何在中心点周围模拟重力对物体的牵引力。这类似于恒星引力影响行星运动的方式。
以下脚本是基于简单的三角恒等式构建的,该恒等式规定sin2x + cos2y = 1。
下面是您需要将其放入要旋转的对象中的脚本:
如果您希望玩游戏的人控制旋转,则可以使用此脚本:
对于正在围绕其旋转的“星球”或其他物体,您需要使用以下脚本:
确保将“星球”或其他物体的旋转设置为“不旋转”。
使用三角函数是更有经验的Scratch用户模拟重力的一种平滑有效的方式。通过一些更高级的脚本,您甚至可以围绕非圆形对象旋转。
使用旋转创建重力
另一种模拟重力的方法是更改角色的中心,以便在旋转时它似乎受到重力的牵引。这种方法要简单得多,但要实现它则更加困难。请注意,不再支持中心更改(在3.0版中)。您必须移动造型才能使其工作。您可以下载Scratch 2.0离线编辑器。
- 将精灵的中心更改为星球的中心。
- 对于该角色的每个单独精灵,重复步骤1。
- 为每个精灵编写每种不同情况的脚本:
旋转重力的一个示例可在此处查看。
使用物理创建重力
一种高级模拟重力的技术涉及到牛顿的普遍引力定律:
变量和列表
从这个方程和牛顿第二定律(F = ma)我们可以解出物体速度的变化,即:a = (Gm2)/(r2)。
这描述了一个物体由于另一个物体的引力而产生的加速度(质量为m2)。
在上面的方程中,需要三个变量:
- G(牛顿的普遍引力定律)
- m2(另一个物体的质量)
- r(物体之间的距离)
G是一个普遍常数,常常会导致质量和距离看起来非常笨拙或不直观。为了简化方程并允许您使用更容易/友好的数字,我们实际上可以忽略G。当您选择相对质量时,您将考虑到它。如果项目涉及非常大的(例如月球大小的)质量和大的(例如低轨道级别的)距离,请使用6.67 * 10−11作为G。
除了物体二的质量和距离外,还需要存储运动物体(物体一)的速度:
- X速度
- Y速度
同时,为了将加速度转换成x和y分量,需要使用一个比例(这是基于x和y力量形成的直角三角形,类似于物体本身形成的直角三角形)
- 比例
最后,需要使用一个变量来遍历每个物体和每个物体的x和y位置:
- I
这些物体的质量将存储在列表中:
- 质量
以及x和y位置:
- X位置
- Y位置
编写脚本
首先,需要创建一个自定义块,用于遍历项目中的每个对象:
需要注意的是,自定义块需要在不刷新屏幕的情况下运行。创建自定义块后,需要计算精灵和物体之间的距离:
接下来,需要计算总加速度:
然后需要将力转换为其x和y分量。为了实现这一点,将力与距离进行比较,并将其与精灵和物体之间的水平/垂直距离进行比较,就可以实现这一点:
现在脚本已经完成,但是变量X速度和Y速度需要有一些用途:
最终成果
完成上述步骤后,以下应该是最终的代码:
在Scrollers中模拟重力
可以在Scratch上模拟重力,用于Scrollers等需要将物体向下强制的项目中。以下列出了您可以使用的几种方法。
速度方法
速度法是创建重力的好方法,对于多种情况非常有效和适应。以下是一个示例脚本-请注意,此脚本将使精灵在地面内部而非顶部。此脚本将放置在受重力影响的精灵中:
直接移动方法
直接移动比速度方法更简单,但在所做的事情上效率远低于速度方法。不仅跳跃看起来不真实,而且在几乎所有情况下都不太实用。尽管如此,脚本可以运行并且对初学者是一个很好的起点:
在飞行物体上模拟重力
通过正确的背景和脚本,编程一个精灵“飞行”可能相当简单,但添加重力有助于制作平台游戏以及喷气背包游戏。以下脚本可以帮助实现飞行引擎中的重力:
![【图16】][22