为孩子们准备的Scratch闯关游戏:躲开小球

由 小石头编程 发表于 2024年05月01日
### 介绍 您将学习如何创建一个平台游戏,在该游戏中玩家必须躲避移动的球才能到达关卡的尽头。 单击绿色小旗标志开始游戏,使用方向键控制角色移动,使用** 空格** 键跳跃,遇到粉红的墙可以向上爬。 ![](https://www.codxz.com/media/upload/2024050110085423.png) ### 资源获取 ![](https://www.codxz.com/media/upload/2024042517221275.png) 想要获取项目文件,可扫码关注“小石头编程”公众号,回复“**躲开小球**”获取下载地址。 ### 能学到的知识 在这个项目中,我们可以学到以下知识: - 如何使用键盘控制角色 - 使用“**如何-那么-否则**”积木 - 了解重力以及如何在游戏中应用重力(物理引擎) - 如何克隆角色 ### 项目制作 #### 1、角色移动 首先创建一个可以左右移动并可以爬梯子的角色,我们可以选择一个精灵,这个精灵最好有走路动画,这样可以让它看起来更自然,如下所示: ![](https://www.codxz.com/media/upload/2024050110282408.png) 另外,我们有一个平台图案的背景,如下图所示: ![](https://www.codxz.com/media/upload/2024050110290845.png) 给我们的角色添加代码,以便玩家可以使用方向键来移动角色。 当玩家按下向右箭头时,角色应向右侧移动几步,然后换成下一个造型: ![](https://www.codxz.com/media/upload/2024050110310348.png) 如果您的角色不适合,需要调整其大小: ![](https://www.codxz.com/media/upload/2024050110320261.png) 通过单击绿旗并按住向右箭头键来测试您的角色。 您的角色是否向右移动? 您的角色看起来像在走路吗? 下面我们来添加向左箭头的控制代码,这样当向左按钮被按下时,它就可以向左走了。 ![](https://www.codxz.com/media/upload/2024050110333389.png) 测试新代码,看是否能正常工作。您会发现,向左时,角色可能会颠倒过来。 ![](https://www.codxz.com/media/upload/2024050110341628.png) 如果是这样,您可以通过单击角色的 方向,然后单击左右箭头来来解决此问题。 ![](https://www.codxz.com/media/upload/2024050110344087.png) 您也可以通过把下面这个积木添加到角色代码的开头来解决此问题 ![](https://www.codxz.com/media/upload/2024050110371555.png) 想要实现爬粉红色的梯子的功能,只要在 上箭头被按下 并且 角色精灵刚好碰到了正确的颜色时,在舞台上把角色精灵向上移动几步就可以了。代码如下: ![](https://www.codxz.com/media/upload/2024050110393447.png) 测试您的代码。 您可以让角色爬上粉红色的梯子并到达关卡的尽头吗? ![](https://www.codxz.com/media/upload/2024050110395595.png) #### 2、关卡完成 向你的角色精灵添加更多的代码积木,如果 它到达了绿色的门,让它说点什么吧 ![](https://www.codxz.com/media/upload/2024050110411948.png) #### 3、重力和跳跃 现在,您将会把角色的移动做得更加逼真:为游戏增加重力,并使角色具有跳跃的能力。 在游戏中,移动您的角色,使其离开平台。 您看到它可以走到了空白的地方吗? ![](https://www.codxz.com/media/upload/2024050110420334.png) 要解决这个问题,需要在游戏中添加重力 创建一个新的名为 **重力** 的变量,我们可以根据需要在舞台中隐藏此变量。 ![](https://www.codxz.com/media/upload/2024050110424523.png) 添加下面这些设置 **重力** 为负数的代码块,并使用 **重力** 的值反复更改角色的 y 坐标: ![](https://www.codxz.com/media/upload/2024050110462224.png) 单击绿旗,然后将您的角色拖动到舞台的顶部。 发生了什么? 这个重力效果是不是你想要的呢? ![](https://www.codxz.com/media/upload/2024050110440907.png) 重力不应该使角色精灵穿过平台或梯子! 添加一个 **如果** 积木块到你的代码中,只有当角色处于空中时才让重力起作用。 重力代码应如下所示: ![](https://www.codxz.com/media/upload/2024050110463471.png) 再次测试游戏,看看现在重力是否正常工作。 当角色精灵接触到平台或梯子时,它会不会停止下落? 您可以使角色走出平台边缘并掉到下面的平台吗? ![](https://www.codxz.com/media/upload/2024050110465530.png) 现在添加代码以使您的角色在玩家按下空格键时跳起来。 一种非常简单的方法是将角色向上移动几次: ![](https://www.codxz.com/media/upload/2024050110481240.png) 由于重力不断将您的角色向下推4个像素,因此您需要在 将 y 坐标增加 (4) 的积木块中选择一个大于 4 的数字。 更改数字,直到您对角色跳跃的高度满意为止。 测试您的代码,我们注意到跳跃动作不是很平滑。 为了使跳跃看起来更平滑,需要把角色精灵上升的幅度调整的越来越小,直到不再升高为止。 因此需要再创建一个名为 **跳跃高度** 的新变量。 同样的,您可以根据需要隐藏此变量。 删除已经添加到角色精灵中的跳跃部分的代码,然后添加以下代码: ![](https://www.codxz.com/media/upload/2024050110514350.png) 这段代码将您的角色先上移 8 个像素,然后再上移 7.5 个像素,然后再上移 7 个像素,依此类推,直到它不再升高为止, 这样就使得跳跃看起来更加平滑。 记得要把 设置 **跳跃高度** 积木块放在变量,该变量在** 重复执行** 的积木块前面, 然后测试您的游戏。 重复这两个步骤,直到您对角色跳跃的高度感到满意为止。 #### 4、挑战:改进跳跃体验 即使角色已经在半空中,只要玩家继续按下 **空格键**,角色就会连续向上跳。 如果一直按住空格键,您就会看到这种现象。 您是否可以更改角色精灵的跳跃代码,使得角色**如果**接触到蓝色平台的时候才能进行跳跃。 #### 5、躲避小球 您的角色现在已经可以移动和跳跃了,是时候添加一些躲避球了。 创建一个新的小球精灵,您可以选择任何您喜欢的球。 ![](https://www.codxz.com/media/upload/2024050110564170.png) 调整球形精灵的大小,以便角色可以跳过它,尝试使角色跳过球以测试球的大小是否合适。 ![](https://www.codxz.com/media/upload/2024050110585952.png) 将下面的代码添加到小球精灵中: ![](https://www.codxz.com/media/upload/2024050110595015.png) ![](https://www.codxz.com/media/upload/2024050111012288.png) 此代码每三秒钟创建一个新的小球精灵克隆,每个新克隆都沿着顶部平台移动,然后掉落。 单击绿旗,我们测试下程序 ![](https://www.codxz.com/media/upload/2024050111015841.png) 向小球精灵添加更多代码,以便其克隆体在所有三个平台上移动。 ![](https://www.codxz.com/media/upload/2024050111024096.png) ![](https://www.codxz.com/media/upload/2024050111025712.png) 现在,如果您的角色被球击中,请添加一些代码块以广播 (发送) 消息! 将下面的代码添加到小球精灵角色中: ![](https://www.codxz.com/media/upload/2024050111033654.png) 最后,在您的角色精灵添加代码块,以使其在收到 **hit** 消息时返回起点位置: ![](https://www.codxz.com/media/upload/2024050111041342.png) 测试您的代码, 检查角色在碰到小球后是否回到起点位置。 #### 6、挑战:随机小球 目前生成的躲避球看起来都一样,并且固定每隔三秒钟就会出现一次。 您能否在游戏中添加代码,以便使小球: - 看起来不那么一样? - 在一个 **随机** 多长时间后出现? - 小球的大小随机? ![](https://www.codxz.com/media/upload/2024050111051542.png) #### 7、激光 为了让我们的游戏更难完成,我们将添加激光! 在游戏中添加新的精灵,并将其命名为 **激光**。 它应该有两种造型:一种叫做 “开”,另一种叫做 “关”。 ![](https://www.codxz.com/media/upload/2024050111060885.png) ![](https://www.codxz.com/media/upload/2024050111061440.png) 将新的激光精灵放置在两个平台之间。 ![](https://www.codxz.com/media/upload/2024050111062396.png) 向激光精灵添加代码,以使其在其两个造型之间切换。 ![](https://www.codxz.com/media/upload/2024050111070216.png) 我们在两次造型更换之间等待 一个**随机**的时间间隔,让激光更有意思。 最后,向激光精灵添加代码,以便激光精灵碰到角色精灵时广播“**hit**” 消息。 ![](https://www.codxz.com/media/upload/2024050111081079.png) 测试我们的游戏,看看是否可以将角色移过激光。 如果激光躲避起来太容易或太困难,修改激光精灵代码中的 **等待** 时间。 #### 8、挑战:更多障碍 如果您认为这个游戏仍然太简单,则可以添加更多障碍,障碍可以是您喜欢的任何东西! 下面是一些建议: - 一只危险的蝴蝶 - 出现和消失的平台 - 掉落的网球 ![](https://www.codxz.com/media/upload/2024050111100278.png) 您甚至可以设计另一个背景来创建下一关。 添加代码,以便当您的角色到达绿色门时,游戏会切换到新的背景。 #### 9、挑战:改进的重力 我们的游戏中还有另外一个小 bug: 如果游戏精灵的任何部位接触到了蓝色的平台,那么角色精灵将不会下落 因此,即使是精灵头部接触平台,精灵也不会掉落! 您可以测试一下:让角色精灵爬上梯子,但不是完全爬上梯子,然后将角色精灵移动到平台下方: ![](https://www.codxz.com/media/upload/2024050111123821.png) 可以让孩子好好思考一下,如何修复这个bug。 #### 10、挑战:更多生命 现在,角色碰到小球时会返回其初始位置。 您还可以给角色精灵设置三条**命**吗?,如果角色精灵碰到了小球就会失去一条命? - 游戏开始时角色有三条命 - 每当角色被击中时,它就会失去一条生命 并且 回到起点 - 如果没有生命,游戏结束