我正在制作一个项目,我有一个由玩家控制的精灵,它必须通过一个类似迷宫的舞台:
红色方框是玩家。如何让播放器无法通过黑线?
当我在Scratch Day进行指导时,这个问题出现了好几次。我在下面提供了一个自我答案,但我也有兴趣看到其他方法。
答案 0 :(得分:3)
我这样做的方法是使用我称之为“旧X和旧Y”的方法。
基本上,你不断记录精灵的当前位置,然后在触摸线条时再回到它。
更有帮助...
这是处理它的整个脚本:
让我们来看看它是如何运作的。
首先,我们使用两个变量 - 这里名为“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