如何让Scratch精灵从迷宫边缘反弹?

时间:2018-05-31 10:12:52

标签: mit-scratch

我正在制作一个项目,我有一个由玩家控制的精灵,它必须通过一个类似迷宫的舞台:

enter image description here

红色方框是玩家。如何让播放器无法通过黑线?

当我在Scratch Day进行指导时,这个问题出现了好几次。我在下面提供了一个自我答案,但我也有兴趣看到其他方法。

2 个答案:

答案 0 :(得分:3)

我这样做的方法是使用我称之为“旧X和旧Y”的方法。

基本上,你不断记录精灵的当前位置,然后在触摸线条时再回到它。

更有帮助...

这是处理它的整个脚本:

enter image description here

让我们来看看它是如何运作的。

首先,我们使用两个变量 - 这里名为“OldX”和“OldY”。变量是一种存储项目中使用的数据的方法。它可以包含数字或字母。变量有点像盒子 - 你可以将东西存储在其中,并在不同的时间查看其中的内容。您可以在脚本选项卡的“数据”块部分中创建变量。

那么这些变量的重点是什么,我们在其中加入了什么?

这些变量存储精灵的 x y 位置 - 它当前在舞台上的位置。 Y是垂直轴,x是水平轴。

所以这些变量正在做的是使用“运动”中的“x位置”和“y位置”块来记录和存储精灵当前所在的位置。

所以我们存储数据。现在我们需要对这些数据做些什么?我们为什么要存储它?

我们需要存储它,以便我们可以使用它来回到那一点,当我们触摸线条时。

所以让我们在这个脚本的开头看一下 - 我们有一个“点击绿色标志时”,以启动脚本,并“永远”,以便它总是检查是否它触动了线条。

然后我们得到了“if”。这是我们检查是否触摸线的地方 - 这里我选择检查它是否接触黑色,因为我使用线条作为舞台的一部分,并检查边缘。根据您的项目,您可以更改它正在检查的内容,例如,另一个精灵。

所以我们正在检查它是否触及了它无法通过的东西。然后我们需要让它实际上不通过。

这就是为什么我们让精灵去了之前的地方。我们有“设置x”和“设置y”块,以使其转到特定位置。我们将x和y设置为“OldX”和“OldY”变量,这些变量一直存储位置,不断更新。

所以我们将x和y设置为原来的位置,并且......它不会通过黑色!

最后一点 - 它并不明显,但剧本的顺序在这里很重要。如果您将“set OldX”和“set OldY”块放在“if”部分上方,则无效。如果它以这种方式执行,那么即使它变为黑色,它也会将变量设置为该位置,因此您最终只会像脚本不存在那样通过这些行。

答案 1 :(得分:0)

您可以使播放器将其正常速度的负数步进。例如,如果您有这样的代码:

when right arrow pressed
move (10) steps

在此代码中添加(请注意,我编写了rgb(),但是您使用了指针来检测和存储颜色):

when green flag clicked
if touching rgb(0, 0, 0) and key (right) pressed
move (-10) steps