模拟重力

在Scratch中模拟重力或至少模拟重力效应可能比较困难,但由于Scratch中的三角函数模块,这是可能的。

提示:您应该根据需要调整本教程中显示的脚本,以适应您的项目。

使用三角函数创建重力

本节旨在教您如何在中心点周围模拟重力对物体的牵引力。这类似于恒星引力影响行星运动的方式。

以下脚本是基于简单的三角恒等式构建的,该恒等式规定sin2x + cos2y = 1。

下面是您需要将其放入要旋转的对象中的脚本:

【图1】

如果您希望玩游戏的人控制旋转,则可以使用此脚本:

【图2】

2(1).png

对于正在围绕其旋转的“星球”或其他物体,您需要使用以下脚本:

【图3】

确保将“星球”或其他物体的旋转设置为“不旋转”。

【图4】

使用三角函数是更有经验的Scratch用户模拟重力的一种平滑有效的方式。通过一些更高级的脚本,您甚至可以围绕非圆形对象旋转。

使用旋转创建重力

另一种模拟重力的方法是更改角色的中心,以便在旋转时它似乎受到重力的牵引。这种方法要简单得多,但要实现它则更加困难。请注意,不再支持中心更改(在3.0版中)。您必须移动造型才能使其工作。您可以下载Scratch 2.0离线编辑器。

  1. 将精灵的中心更改为星球的中心。

【图5】

5(1).png

5(2).png

5(3).png

5(4).png

  1. 对于该角色的每个单独精灵,重复步骤1。
  2. 为每个精灵编写每种不同情况的脚本:

【图6】

旋转重力的一个示例可在此处查看。

使用物理创建重力

一种高级模拟重力的技术涉及到牛顿的普遍引力定律:

【图7】

变量和列表

从这个方程和牛顿第二定律(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位置

编写脚本

首先,需要创建一个自定义块,用于遍历项目中的每个对象:

【图8】

需要注意的是,自定义块需要在不刷新屏幕的情况下运行。创建自定义块后,需要计算精灵和物体之间的距离:

【图9】

接下来,需要计算总加速度:

【图10】

然后需要将力转换为其x和y分量。为了实现这一点,将力与距离进行比较,并将其与精灵和物体之间的水平/垂直距离进行比较,就可以实现这一点:

【图11】

现在脚本已经完成,但是变量X速度和Y速度需要有一些用途:

【图12】

12(1).png

最终成果

完成上述步骤后,以下应该是最终的代码:

【图13】

在Scrollers中模拟重力

可以在Scratch上模拟重力,用于Scrollers等需要将物体向下强制的项目中。以下列出了您可以使用的几种方法。

速度方法

速度法是创建重力的好方法,对于多种情况非常有效和适应。以下是一个示例脚本-请注意,此脚本将使精灵在地面内部而非顶部。此脚本将放置在受重力影响的精灵中:

【图14】

直接移动方法

直接移动比速度方法更简单,但在所做的事情上效率远低于速度方法。不仅跳跃看起来不真实,而且在几乎所有情况下都不太实用。尽管如此,脚本可以运行并且对初学者是一个很好的起点:

【图15】

在飞行物体上模拟重力

通过正确的背景和脚本,编程一个精灵“飞行”可能相当简单,但添加重力有助于制作平台游戏以及喷气背包游戏。以下脚本可以帮助实现飞行引擎中的重力:

![【图16】][22

标签: Scratch, Scratch编程, Scratch中国, 少儿编程, Scratch社区, Scratch编程社区, Scratch编程课程, Scratch编程教程