用你的手指在 Scratch 中喂养 Pishi

使用食指移动一个球,抓住鱼,并在这个由摄像头控制的 Scratch 游戏中喂养 Pishi。

难度
中级

🕒

预计时间
20–25 分钟

🧩

扩展      

HANDPOSE

Feed Pishi with Your Finger - Project

📖 你将学到什么

  • 如何通过手部追踪检测食指指尖的位置
  • 如何使用手指控制 Scratch 角色
  • 如何让一个角色携带另一个角色移动
  • 如何创建一个计时得分游戏
  • 如何使用广播让角色做出反应

🧰 你需要准备

  • 一台带有摄像头的电脑或笔记本电脑
  • Chrome、Firefox、Edge 或其他现代浏览器
  • Pishi.ai Scratch(开始一个新项目)
  • HandPose 扩展(查看帮助指南)
  • 一个能让摄像头清晰看到你手部的空旷空间
  • 已包含在项目中的 Pishi、Fish 和 Ball 角色

HandPose 可以返回手部各个关键点在 Scratch 舞台上的 X 和 Y 坐标。在这个项目中,keypoint 8(食指指尖)用于控制 Ball。

🛠️ 构建你的项目

1

准备 Pishi 和游戏

将 Pishi 放在舞台左侧,并创建三个变量:

  • score(分数)
  • time(时间)
  • locked(锁定状态)

在 Pishi 角色中,当绿旗被点击时,将 score 和 locked 设置为 0。

Prepare Pishi and the Game - Scratch Blocks
2

2. 让 Ball 跟随你的手指

添加一个 Ball 角色。这个小球将作为跟随你食指指尖的指针。

使用 HandPose X 和 Y 积木,并进行以下设置:

  • Keypoint: 8(食指指尖)
  • Hand number: 1

将 time 设置为 0 积木可以确保在新游戏开始时,Ball 能够立即开始追踪你的手指。

当你在摄像头前移动食指时,Ball 就会跟随它在舞台上的位置移动。

Make the Ball Follow Your Finger - Scratch Blocks
点击图片以放大
3

3. 添加 Fish

添加一个带有多种鱼造型的 Fish 角色。

 

当游戏开始时:

  • 重置计时器
  • 继续进行游戏,直到计时器达到 20 秒
  • 检测 Fish 是否碰到了 Ball

当 Ball 碰到 Fish 时,将变量 locked 设置为 1。

 

然后,当 locked = 1 时,将 Fish 移动到 Ball 的 X 和 Y 坐标位置。

 

这样可以使 Fish 保持附着在 Ball 上,并在你移动手部时顺畅地跟随你的指尖。

Add the Fish - Scratch Blocks
4

4. 给 Pishi 喂食

在同一个循环内部,检测 Fish 是否碰到了 Pishi。

当它到达 Pishi 时:

  • 将 locked 重新设置为 0
  • 将分数增加 1
  • 广播 message1
  • 将 Fish 移动到一个随机位置
  • 换成下一个 Fish 造型

将 locked 设置为 0 会将 Fish 从 Ball 上释放,以便它可以出现在舞台上的其他位置。

每当 Pishi 被喂食一次,score 就会增加,同时一条新鱼会出现在不同的位置。切换造型还会让 Pishi 看起来像是在吃不同种类的鱼。

Feed the Fish to Pishi - Scratch Blocks
5

5. 添加计时器

在游戏运行期间,不断将 Scratch 计时器的值复制到变量 time 中。

 

20 秒后,将变量设置为单词 FINISH 并广播 message1。

 

使用 FINISH 会告知 Ball 停止跟随玩家的手指,并告知 Pishi 游戏已经结束。

Add the Timer - Scratch Blocks
6

6. Make Pishi React

当 Pishi 收到 message1 时,短暂切换到 costume2 造型,然后返回到 costume1 造型。

如果游戏已经结束:

  • 将 Pishi 移动到舞台中央
  • 显示玩家的最终 score

现在,Pishi 每吃一条鱼都会做出反应,并在时间用完时公布 score。

Make Pishi React - Scratch Blocks

🚀 试试你的项目!

点击绿色旗帜并允许摄像头访问。

 

然后:

  1. 将一只手放在摄像头能清晰看到的地方。
  2. 移动食指,直到 Ball 碰到一条鱼。
  3. 带着鱼移向 Pishi。
  4. 用鱼碰到 Pishi 即可得分。
  5. 在计时结束前,尽可能多地给 Pishi 喂鱼。
Feed Pishi with Your Finger - Project

🤖 它是如何工作的?

HandPose 扩展可以追踪手上的关节点。
在这个项目中,它的运行逻辑如下:

食指指尖

HandPose 获取其 X 和 Y 坐标位置


Ball 移动到这些坐标位置


Ball 接触并带动 Fish 移动


Fish 到达 Pishi 处


score 增加

keypoint 8 代表食指指尖。HandPose 将其在摄像头中的位置转换为可以直接在 Scratch 舞台上使用的坐标。

💡 让它变得更好!

  1. 使用任意一只手控制游戏 使用 hand count block 检测摄像头中是否能看到一只或两只手。例如,可以使用一只手移动 Ball,当检测到两只手时显示一条奖励鱼。
  2. 添加手指手势 使用 distance between keypoints block 检测拇指和食指指尖是否靠近。这个手势可以让鱼冻结、激活磁铁,或者自动收集附近的鱼。
  3. 创建手部控制的难度等级 使用 angle between keypoints block 改变游戏难度。例如,旋转你的手可以让鱼移动得更快,或者减少剩余时间。
  4. 改善手部消失时的追踪效果 更改 when x/y not found return 设置。当摄像头无法检测到指尖时,可以让 Ball 停留在最后的位置,或者移动到安全位置。
  5. 添加更多鱼和特殊奖励 创建更多 Fish 造型或克隆体。添加一条价值 3 分的金色鱼,并让它只在检测到特殊手势时出现。

🔗 分享你的创作

完成你的项目了吗?更改 Fish、背景、计时器和计分规则,创建属于你自己的手指控制喂养游戏。

OPEN PROJECT & REMIX
滚动至顶部