利用克隆体进行粒子效果

克隆体是Scratch 2.0中的新功能。它们允许您创建精灵的完全副本,然后可单独运行任务。

正确使用克隆体非常重要——您应该确保脚本简洁、快速和易于阅读。本教程将介绍如何使用克隆体创建粒子效果的实用工具。首先使用克隆体创建“火花”效果,然后优化代码,最后创建一个易于使用的包,使用户可以轻松地将其纳入项目中。目标是创建一个名为“在x: () y: ()处创建火花”的单个块。

操作步骤:

创建效果

首先,您需要创建父级精灵。此精灵将生成所有火花效果的粒子,注意它本身永远不会成为其中的一个粒子。代码的一般计划是:

  • 转到所需位置以生成火花效果
  • 创建10个克隆体,每个克隆体都是火花的一个粒子
  • 当粒子被创建时,它们飞出并下落,一起产生火花效果 首先创建您的精灵。将其命名为“火花”并使其造型为一个橙色的点。

注意:使用造型而不是笔来绘制的原因是,如果用户的脚本调用了“清除”,粒子效果将被擦除。 首先,创建两个局部变量,并称其为“velocity x”和“velocity y”。确保它们是“仅为此精灵”设置的。

注意:尽可能使用局部变量,以便不向用户的调色板添加太多新变量。如果用户有同名的变量,将会出现错误。如果确实需要全局变量,请在其名称前加上前缀。例如,使用“(spark).color”而不是“color”。

现在,您需要在“当克隆体启动时”块下编写常见的速度弧度脚本:

【图1】

此时,您可以运行该脚本!只需按空格键即可看到一些火花效果。

为什么速度变量不会混淆并被每个克隆重置?当我们点击“仅限此角色”时,我们将其设置为词法作用域变量,它会随着角色一起复制。也就是说,每个克隆都有自己的速度x和速度y变量,彼此独立。

此脚本的一个问题是,如果您多次按空格键,每个火花都会复制自己。这显然是错误的行为;这是因为当按下空格键时,每个克隆开始创建副本。因此,我们需要一个新的变量来告诉我们是否是克隆:

【图2】

2(1).png

变量告诉角色是否要复制自己。确保它也是局部变量。你也可以通过使用“当(开始旗帜)被单击”来修复问题,而不是使用“当空格键被按下”。

【图3】

优化与改进

在本节中,我们将向火花引擎添加以下优化:

  • 火花将逐渐产生,而不是突然产生
  • 火花将自动淡出和"死亡",而不是等待碰到边缘

首先,我们隐藏父火花,因为它不应该可见。我们还将火花创建例程设为自定义块。然后,我们在创建克隆体时添加一个小延迟,随着时间的推移,它会改变,以获得更真实的效果:

【图4】

4(1).png

要使火花淡出,我们只需更改幽灵效果:

【图5】

5(1).png

我们还可以创建更多的火花,以获得更加丰富的效果,并轻微调整创建延迟。为了分发火花库,我们需要创建一个自定义块,可以在任何精灵上定义。当用户调用它时,它应该向火花精灵发送广播,以生成一个火花效果。 我们通过创建一个全局列表“(spark) preferences”来实现这一点,其中包含有关火花库的信息列表,按顺序包括:

  1. 要生成的X位置
  2. 要生成的Y位置
  3. 要生成的颜色 添加这些操作,我们有:

6.png

6(1).png

6(2).png

我们还创建了全局块和一个小型演示脚本:

【图7】

这里的一个问题是,当你在旧的火花效果运行时创建新的火花时,旧的火花效果会停止。这是因为广播的原因。为了避免这种情况,我们使用一个触发器变量代替广播。我们将一个新的项目添加到我们的首选项列表中。每当创建一个新的火花时,我们只需将其设置为“new”,我们的库在效果创建完成后将其重置为空:

【图8】

8(1).png

8(2).png

8(3).png

在这里可以找到一个示例项目。

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