用你的肩膀在 Scratch 中控制 Pishi

使用你的肩膀倾斜来左右移动 Pishi,接住苹果,躲避甜甜圈,并在时间结束前尽可能获得更多分数。

难度
中级

🕒

预计时间
20–35 分钟

🧩

扩展

POSENET

Control Pishi with Your Shoulders in Scratch - stage

📖 你将学到什么

  • 如何使用 PoseNet 检测人的身体
  • 如何测量左右肩膀之间的角度
  • 如何使用身体动作控制 Scratch 精灵
  • 如何根据肩膀倾斜程度改变移动速度
  • 如何创建具有随机位置和速度的下落物体
  • 如何使用共享变量控制计时游戏

 

PoseNet 可以追踪身体关键点,例如肩膀、肘部、手腕、髋部、膝盖和脚踝。在这个项目中,肩膀之间的角度会控制 Pishi 的水平移动。

🧰 你需要准备

  • 一台带有可用摄像头的电脑
  • Chrome、Firefox、Edge 或其他现代 Chromium 浏览器
  • Pishi.ai Scratch(开始一个新项目)
  • PoseNet 扩展(查看帮助指南)
  • 一个 Pishi 精灵
  • 一个 Apple 精灵
  • 一个 Donut 精灵
  • 以下变量:
    • score(分数)
    • time(时间)
    • angle(角度)
    • apple speed(苹果速度)
    • donut speed(甜甜圈速度)

使用良好的光线,并确保你的上半身在摄像头视野中可见,这样 PoseNet 才能清楚检测到两个肩膀。

🛠️ 构建你的项目

1

1. 设置 Pishi 和肩膀控制

将 Pishi 放置在舞台底部附近,并创建以下变量:
  • score(分数)
  • time(时间)
  • angle(角度)
当绿色旗帜被点击时:
  • 将 score 设置为 0
  • 将 Pishi 移动到 x: 0 y: -130
  • 重置计时器
  • 继续游戏,直到计时器大于 20
在循环内部,首先检查 PoseNet 是否检测到至少一个人。然后将 angle 设置为:abs(左肩和右肩之间的角度)– 90 使用 abs 可以让脚本在 PoseNet 返回接近 90 或 -90 的角度时都能正常工作。使用一个较小的中立区域来防止不需要的移动:
  • 如果 angle > 3,将 x 增加 5 + angle
  • If angle 如果 angle < -3,将 x 增加 -5 + angle
肩膀倾斜同时控制移动方向和速度。倾斜幅度越大,Pishi 移动得越快。通过这种设置,Pishi 会向较高的那个肩膀方向移动。 在游戏运行期间,持续将 time 设置为当前 Scratch 计时器的值。
shoulder-controlled pishi posenet scratch script - Scratch Blocks
点击图片以放大
2

2. 添加下落的 Apple

添加一个 Apple 精灵,并创建变量:
  • apple speed(苹果速度)
当绿色旗帜被点击时:
  • 将 time 设置为 0
  • 重复直到 time = FINISH
  • 将 Apple 放置在舞台上方的随机 x 位置
  • 显示 Apple
  • 将 apple speed 设置为 -10 到 -5 之间的随机值
让 Apple 向下移动,直到:
  • 它的 y 坐标小于 -160,或者
  • time = FINISH
当 Apple 下落时,检查它是否碰到 Pishi。当 Apple 碰到 Pishi 时:
  • score 增加 1
  • 播放 Chomp 声音
  • 隐藏 Apple
  • 将它向下移动,使当前下落结束
外层循环会再次将 Apple 放置到另一个随机位置,并开始新的下落。
shoulder controlled pishi posenet scratch script - Scratch Blocks
3

3. 添加下落的 Donut

添加一个 Donut 精灵,并创建变量:

  • donut speed(甜甜圈速度)

Donut 脚本使用与 Apple 脚本相同的结构。
当绿色旗帜被点击时:

  • 将 time 设置为 0
  • 重复直到 time = FINISH
  • 将 Donut 放置在舞台上方的随机 x 位置
  • 显示 Donut
  • 将 donut speed 设置为 -10 到 -5 之间的随机值

让 Donut 向下移动,直到:

  • 它的 y 坐标小于 -160,或者
  • time = FINISH

当 Donut 下落时,检查它是否碰到 Pishi。
当 Donut 碰到 Pishi 时:

  • score 减少 1
  • 播放 Bite 声音
  • 隐藏 Donut
  • 将它向下移动,使当前下落结束

与 Apple 相比,主要区别在于速度变量、声音和分数变化。

shoulder controlled pishi posenet scratch script - Scratch Blocks
4

4. 给 Pishi 喂食

After the timer becomes greater than 20 seconds, the main repeat loop ends.

 

Then Pishi:

  • 将 time 设置为 FINISH
  • 说 Time’s up
  • 播放 Meow 声音

Apple 和 Donut 脚本都会使用:

  • 重复执行,直到 time = FINISH
  • 将 time 设置为 FINISH 会让两个下落精灵停止。

The Apple and Donut also set time to 0 when the green flag is clicked.

 

This prevents either sprite from immediately leaving its loop if it starts before Pishi resets the value from a previous game.

shoulder-controlled pishi posenet scratch script - Scratch Blocks

🚀 试试你的项目!

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

  1. 站在摄像头可以清楚看到你上半身的位置。
  2. 保持两个肩膀都可见。
  3. 抬高一个肩膀并降低另一个肩膀,让 Pishi 移动。
  4. 倾斜得更大,让 Pishi 移动得更快。
  5. 接住苹果来增加分数。
  6. 躲避甜甜圈,避免失去分数。
  7. 尝试在 20 秒计时结束前获得最高分。
Control Pishi with Your Shoulders in Scratch - stage

🤖 它是如何工作的?

PoseNet 会检测玩家左右肩膀的位置。


项目按照以下过程运行:

你的肩膀

PoseNet 检测两个肩膀关键点

扩展功能测量两个肩膀之间的角度

Scratch 使用绝对角度并减去 90


结果控制 Pishi 的方向和速度


Pishi 接住苹果并躲避甜甜圈

The Apple and Donut sprites repeatedly appear at random horizontal positions and fall from the top of the Stage.

 

After they are caught or leave the Stage, they return to the top at a new random position.

💡 让它变得更好!

  1. 抬起双手来启动护盾 使用两个手腕和肩膀的 Y 坐标。当两个手腕都高于对应的肩膀时:
    • 启动护盾
    • 防止甜甜圈减少分数
    • 改变 Pishi 的造型
    • 播放强化声音
    这会引入手腕追踪,同时保持肩膀倾斜作为主要控制方式。
  2. 使用单手抬起控制下落物体 检测左手腕或右手腕是否高于对应的肩膀。例如:
    • 抬起左手,让甜甜圈减速
    • 抬起右手,让苹果减速
    • 放下双手,恢复正常速度
    放下双手,恢复正常速度
  3. 下蹲躲避飞行障碍物 添加一个在舞台上水平移动的障碍物。使用鼻子或肩膀的 Y 坐标检测玩家何时蹲下。当玩家下蹲时:
    • 让 Pishi 短暂缩小
    • 让 Pishi 向下移动
    • 允许障碍物从头顶经过
    这会为游戏增加垂直方向的身体动作。
  4. 添加跳跃能力 使用脚踝、膝盖、髋部或肩膀的 Y 坐标检测跳跃。当玩家跳起时:
    • 让 Pishi 跳跃
    • 收集附近所有苹果
    • 躲避地面障碍物
    • 启动短暂的分数奖励
    这展示了 PoseNet 的下半身追踪能力。
  5. 添加单腿平衡奖励 使用脚踝或膝盖关键点检测是否抬起一条腿。当玩家单腿保持平衡时:
    • 苹果获得两分
    • 甜甜圈下落速度加快
    • 奖励计量条增加
    这会将项目变成一个平衡和协调挑战。
  6. 创建姿势组合 结合多个 PoseNet 条件来触发特殊动作。例如:
    • 双手举起 → 护盾
    • 左手举起 → 冻结甜甜圈
    • 右手举起 → 吸引苹果
    • 下蹲 → 躲避飞行障碍物
    • 单腿抬起 → 双倍分数模式
    • 双臂向两侧伸展 → 清除所有甜甜圈
    这展示了多个身体关键点如何协同工作,从而创建更高级的全身控制方式。

🔗 分享你的创作

完成你的项目了吗?添加你自己的精灵、声音、背景和 PoseNet 控制方式。尝试创建不同主题,例如:
  • 鱼和垃圾
  • 星星和小行星
  • 健康食品和垃圾食品
  • 宝藏和下落的岩石
然后与你的朋友或同学分享你的项目。然后与你的朋友或同学分享你的项目。
OPEN PROJECT & REMIX
滚动至顶部