使您的Scratch动画对事件更具反应性
在上一个教程中,您继续进行一个项目,使螃蟹在屏幕上追逐一只猫,增加了时间限制并保持得分。
在这一部分中,我们将继续进行该项目。 我们将添加一个广播事件,并使用它来触发其他精灵的脚本。 然后,当游戏结束时,我们将隐藏大多数精灵,并显示最终得分。
您需要什么
要完成本教程,您需要:
- Scratch的免费帐户
- 可访问Scratch的网络浏览器(我建议使用现代浏览器,例如Chrome,Firefox,Safari或Opera,以获得最佳体验)
入门
我们将使用本系列前面部分中创建的项目。 我们将使用到目前为止已创建的资产和脚本,并添加更多内容。
根据您是否使用该教程,有两种方法可以开始本教程:
- 打开您为上一个教程创建的项目,并进行复制。
- 重新混合我创建的项目以支持上一个教程。
另外,您可以继续在已经创建的同一项目中工作。 这是您执行上述每一项操作的方式(您只需执行一项操作)。
复制自己的项目
打开Scratch并转到要复制的项目。 确保单击了“ 查看内部”按钮,以便可以查看项目的工作情况。
在工具栏中,单击文件>另存为副本 :
Scratch将打开您的新副本。 重命名并开始处理。
重新混音我的项目
登录到Scratch并转到我的项目的数据和变量页面 。
单击“ 查看内部”按钮以查看项目:
现在,单击“ 混音”按钮。 Scratch会将我的项目的副本保存为您帐户中的新项目。 重命名它,您就可以开始了!
创建广播事件以发送消息
在本系列的这一部分中,您将向项目添加broadcast
消息,以在项目内部进行内部通信。 当脚本到达某个点或满足与精灵相关的条件时,您可以在一个脚本中创建广播,然后让其他任何精灵(或舞台)对该消息的广播做出反应。 这将您的精灵链接在一起,并在添加用户交互时提供了更大的范围。
您会记得之前我们添加了一个带有一些文本的sprite(说“ Ouch !!”),我们将其绘制为该Sprite的服装。 此刻,精灵正在舞台上静止不动,什么也不做。 现在,我们将使用广播来使其执行某些操作。
但是首先让我们创建广播。
单击cat sprite,然后编辑已经为其创建的脚本。
打开事件块,然后将broadcast message1
块拖到脚本中,紧接在change Score by 1
块下面。 单击message1的下拉列表,然后单击new message ...。 输入一些可用于定义广播的文本。 该文本不会被用户看到,但是您将在项目的其他地方使用它,因此将其命名为有意义的有意义。 我打电话给我抓 。
这是猫的脚本现在的样子:
现在我们可以使用该广播来触发其他精灵的脚本。
使用广播事件启动脚本
到目前为止,我们已经使用when green flag clicked
段开始了所有脚本,这意味着脚本将在项目启动时自动运行。 有时您不希望发生这种情况:您希望在项目启动后触发脚本。 有几种方法可以执行此操作:可以在按下精灵或按键时或在响度等变量发生变化时触发脚本。 我们将在此使用的方法是在Sprite收到广播消息时启动脚本。
单击您先前创建的文本精灵( Sprite2 )。 首先给它起一个更好的名字(单击其左上角的i图标并编辑该名字)—我叫mine Ouch 。
我们希望此精灵在大多数情况下都是不可见的,并且仅在螃蟹抓到猫时才会出现。 因此,我们将创建两个脚本:第一个脚本隐藏精灵,第二个脚本使其显示。
创建脚本以使精灵消失
为精灵创建此脚本:
-
when green flag clicked
-
hide
您将在Looks块中找到hide
块。 这隐藏了精灵:现在,当您启动项目时,它将消失。
创建脚本以再次显示精灵
现在为Ouch Sprite创建第二个脚本:
-
when I receive caught
-
go to cat
-
show
-
wait 0.5 seconds
-
hide
您将在Events块中找到第一个精灵,在Motion块中找到go to
块,在Control部分中找到wait
块,在Looks中找到 show
和hide
块。
结合使用事件和背景
随着项目变得越来越长,越来越复杂,您可能会发现您希望通过改变背景来给用户带来游戏或动画方面的进步。 在此处,当计时器用尽并且游戏结束时,我们将执行此操作。
为此,我们需要:
- 计时器用尽时添加广播
- 创建一个新的背景,以在游戏结束时显示
- 定时器用完时更改背景
- 游戏结束时隐藏现有的精灵
- 告诉用户比赛结束时的分数
我们将使用broadcast
事件块,以及when backdrop switches to
事件块的时间。 让我们从创建广播开始。
创建广播
选择舞台,然后在其脚本的末尾添加一个broadcast
块,替换stop all
块。 我正在将此广播游戏结束 。
创建一个新的背景
现在,以与本系列前面的背景相同的方式为舞台创建一个额外的背景。 选择舞台 ,单击“ 背景”选项卡,然后从库中导入,绘制或选择背景。 我正在从库中选择“ 圈子”背景。
现在将出现新的背景,而您原来的背景将消失-不要惊慌! 我们将在项目启动时显示原始版本,在游戏结束时显示新版本。
在正确的时间更改背景
现在,您可能可以解决如何在启动项目时使第一个背景出现。 只需将switch backdrop to
从“ 外观”块拖动switch backdrop to
舞台脚本,就在when green flag clicked
块下方, set Score to 0
” set Score to 0
块上方。 在该区块的下拉框中,选择beach malibu 。
现在,当您运行项目时,背景将切换回您熟悉的背景:
要在游戏结束时更改背景,请为舞台创建一个新脚本:
-
when I receive caught
-
switch backdrop to circles
现在,您的舞台将具有两个脚本:
现在,当您运行项目时,背景会在游戏结束时发生变化,但游戏实际上不会结束。 让我们修复它。
游戏结束时隐藏子画面(并在游戏开始时显示它们)
游戏结束时,我们希望螃蟹,海星和精灵消失。 因此,我们需要为每个恶意创建相同的脚本,这些脚本将由广播触发。 好消息是,您可以一次创建脚本,然后将其复制到每个精灵。
从螃蟹精灵开始。 为此创建此脚本:
-
when I receive game over
-
hide
现在,通过将脚本从“螃蟹”精灵的“ 脚本”窗格中拖动到主舞台下的每个精灵中,将该脚本复制到每个ouch和海星精灵中。
现在,当您玩游戏时,精灵会在游戏结束时消失,但是当您再次玩游戏时,精灵不会再出现。 因此,您需要使它们在项目启动时出现。
对于每个螃蟹和海星精灵,请在脚本的开头添加一个show
块,该show
块以when green flag clicked
时开始。 不要对ouch精灵执行此操作,因为只有在螃蟹和猫接触时才会出现。 例如,螃蟹精灵现在将如下所示:
现在,当您玩游戏时,精灵会出现在开头,而消失在结尾。 现在唯一不起作用的是猫精灵,它仍在移动。 我们不希望它那样做,所以我们将为猫编辑现有脚本。
猫目前有一个forever
方块,可以控制它的移动和得分。 将forever
块替换为repeat until
块,并确保所有相同的块仍在repeat until
块内, forever
块内部。 在“ 脚本”窗格上,您可能会发现将forever
块拖离脚本更容易,将repeat until
块拖动到适当位置,然后将repeat until
的块从forever
块内拖动到repeat until
块中。 然后删除forever
块。
在repeat until
块中的空间中, when I receive
块when I receive
,我们不能使用a,因为它们旨在启动脚本。 相反,我们将使用运算符。 将=
块拖到该空间中,将Timer
变量拖到第一个空间,然后在第二个空间中键入0 ,以便该块repeat until Timer = 0
读取repeat until Timer = 0
。
现在运行游戏,当时间停止时,猫仍然可见,但仍会静止。
在游戏结束时告诉用户分数
让猫告诉用户他们的得分。 为cat sprite创建一个新脚本,如下所示:
-
when backdrop switches to circles
-
say join You scored Score
创建第二个块有点复杂。 您需要拖动“ say Hello!
块到脚本,然后将join
块从“ 运算符”拖到显示“ Hello!”的空间。 然后在连接块的第一个空格中输入“ You scored”,并将Score
变量拖到第二个空格。 确保在文本末尾添加一个空格。 该脚本将如下所示:
现在,当您运行游戏时,猫会在最后单独出现并告诉您您的得分。
摘要
将事件添加到项目中,可以使项目随着项目的进展而发生,以响应用户输入,到达特定点的脚本或变量值的变化。 在本教程中,您学习了如何使用事件在计时器倒数到零时更改背景并显示用户的得分。
如果您想挑战,为什么不将一些运算符添加到您创建的告诉用户得分的Sprite中。 也许您可以使用if
块来检测有价值的Score
值,然后让猫说“做得好!” 如果用户的得分超过了一定数量,或者“下次运气更好!” 如果他们的分数很低。
在本系列的下一部分中,我们将继续使用背景创建动画效果。 我们将利用在系列开始时创建的重复背景来创建放大效果。