小球进球大挑战 —— Scratch 控制与碰撞检测入门

用方向键操控小球,避开蓝色墙壁,成功抵达终点吧!

由 小石头编程 发表于 2025年12月16日 · 阅读量 13
## 👋 项目介绍 欢迎来到今天的Scratch小游戏创作之旅!我们将一起制作一个名为「小球进球大挑战」的小游戏。在这个项目里,你将操控一个小球(Ball)使用键盘方向键移动,避开蓝色边界墙,努力到达终点——Goal!当小球碰到Goal时,屏幕上会出现“You win!”的胜利提示! 这个项目不仅画面简洁明快,而且非常适合初学者学习Scratch的基本操作,比如角色控制、碰撞检测和事件处理等。准备好了吗?让我们一起动手做起来吧!🌟 ## 🎯 你将学会 * 如何用方向键控制角色移动 * 怎样设置角色初始位置和方向 * 如何检测两个角色之间的接触 * 使用颜色传感器判断是否碰到特定颜色 * 利用无限循环让程序持续监听状态变化 ## 🛠️ 开始制作 ### 第一步:创建新项目并设置舞台 首先我们要打开Scratch软件,创建一个全新的项目。接着我们要为这个游戏设置一个酷炫的舞台背景。 **操作步骤:** 1. 打开Scratch编辑器,创建一个新项目。 2. 删除默认的白色背景。 3. 点击“选择背景”按钮,在素材库中找到并添加背景 `backdrop2`。 ![action:1](https://www.codxz.com/media/upload/2025121614582709_screenshot_1.png) --- ### 第二步:添加所有角色 接下来我们需要把游戏中需要用到的角色都加入进来:一个是主角小球(Ball),另一个是终点目标(Goal)。这两个角色都需要有自己的外观。 **操作步骤:** 1. 点击左下角的“选择一个角色”按钮; 2. 在角色库中搜索并添加角色 `Ball`; 3. 再次点击“选择一个角色”,搜索并添加角色 `Goal`; 4. 确保每个角色都有正确的初始造型。 ![action:6](https://www.codxz.com/media/upload/2025121614582709_screenshot-screenshot_6.png) --- ### 第三步:Ball 初始化位置与方向 为了让每次游戏开始的时候小球都能出现在固定的位置上,我们需要给它设定好初始坐标和面向方向。 **操作步骤:** 1. 点击角色 `Ball`,进入它的脚本页面; 2. 按照下面代码实现进行拖拽积木; **代码实现:** ```scratch when flag clicked go to x: (-205) y: (147) point in direction (90) ``` **逻辑解析:** 这段代码确保了每次点击绿旗后,小球都会回到屏幕左侧上方的一个固定起点,并且朝右站立。 记得检查坐标的正负值,避免小球出现在画布外哦! ![action:14](https://www.codxz.com/media/upload/2025121614582709_screenshot_14.png) --- ### 第四步:Goal 检测胜利条件 现在我们来实现游戏的核心玩法之一:当小球接触到Goal时显示获胜信息。 **操作步骤:** 1. 切换到角色 `Goal` 的脚本区; 2. 拖入 `when flag clicked`; 3. 加入 `forever` 循环; 4. 在循环内部放入 `if` 条件判断; 5. 设置判断条件为 当碰到小球时; 6. 若满足,则显示文字 `say [You win!]`。 **代码实现:** ```scratch when flag clicked forever if <touching [Ball v]?> then say [You win!] end end ``` **逻辑解析:** 这段代码利用无限循环不断检测小球是否触碰到了Goal。一旦发生接触,就会触发“你说赢了”的反馈! 注意不要忘记选择正确的角色进行编程;同时确认名字拼写一致,比如 `Ball` 必须完全匹配。 ![action:24](https://www.codxz.com/media/upload/2025121614582709_screenshot_24.png) --- ### 第五步:Ball 上下左右移动控制 接下来是最激动人心的部分啦!我们要通过键盘的方向键来控制小球移动。 **操作步骤:** 1. 回到角色 `Ball` 的脚本区; 2. 分别为四个按键创建对应的事件: - 向上键 (`up arrow`):方向为 0°,前进 10 步 - 向下键 (`down arrow`):方向为 180°,前进 10 步 - 向右键 (`right arrow`):方向为 90°,前进 10 步 - 向左键 (`left arrow`):方向为 -90°,前进 10 步 **代码实现:** ```scratch when [up arrow v] key pressed point in direction (0) move (10) steps when [down arrow v] key pressed point in direction (180) move (10) steps when [right arrow v] key pressed point in direction (90) move (10) steps when [left arrow v] key pressed point in direction (-90) move (10) steps ``` **逻辑解析:** 每次按下方向键,小球会先转向对应方向,再向前走10步,从而实现了灵活的操控体验。 ![action:32](https://www.codxz.com/media/upload/2025121614582709_screenshot_32.png) --- ### 第六步:Ball 碰撞蓝色边界反弹机制 为了增加游戏难度,我们在地图边缘设置了蓝色边框作为障碍物。当小球碰到这些蓝线时,它应该自动弹回来一段距离。 **操作步骤:** 1. 继续在角色 `Ball` 的脚本区工作; 2. 新增一条 `when flag clicked` 事件; 3. 下方嵌套一个 `forever` 循环; 4. 在循环内放入 `if` 判断,检测是否碰到颜色 `#1505ff`; 5. 若成立,则执行 `move (-10) steps` 让小球倒退10步。 **代码实现:** ```scratch when flag clicked forever if <touching color (#1505ff)?> then move (-10) steps end end ``` **逻辑解析:** 这个机制模拟了物理世界里的“碰撞反弹”。只要一碰到蓝色墙体,小球就立刻被推回原路,防止越界。 --- ### 第七步:运行演示并查看结果 终于到了见证奇迹的时刻!让我们点击绿旗运行整个项目,看看小球能不能顺利通关吧! **操作步骤:** 1. 点击右上角的绿色旗帜图标; 2. 使用键盘方向键操控小球移动; 3. 观察是否能够正常响应指令; 4. 测试小球是否能在触达Goal时显示出“You win!”; 5. 查看小球是否会因碰到蓝色边界而反弹。 ![action:66](https://www.codxz.com/media/upload/2025121614582709_screenshot_66.png) --- ## 🚀 挑战一下 你已经掌握了基本的游戏制作方法,那不如试着挑战一下自己: 🎯 **任务建议:** - 尝试更换不同的背景图片和角色造型,打造属于自己的版本; - 增加计时器功能,记录玩家完成的时间; - 设计更多种类的障碍物,提升游戏复杂性和趣味性。 发挥你的创意,做出独一无二的作品吧! --- ## 🎉 结语 恭喜你完成了这次精彩的Scratch冒险旅程!从零开始一步步构建了一个可玩性强的小游戏,是不是成就感满满呢? 希望你能继续深入探索Scratch的世界,解锁更多的编程技能,创造出更棒的作品!如果你喜欢这类教程,别忘了关注我们,还有更多精彩内容等着你哦 😊 Keep coding, keep creating! 💻✨

项目下载