Session 745 minutes
第7课:增强现实(AR)互动游戏——用手腕动作切水果
Learning objective: 用 AI 姿态检测跟踪玩家手腕,把虚拟刀刃固定在该位置,切开舞台上落下的水果。
Theory & practice
🍉 第7课:制作 AR 忍者切水果游戏
🥷 把手变成虚拟刀刃
本课我们把 AI 姿态检测(Pose Detection) 和摄像头结合起来,制作 AR 忍者切水果游戏。
玩家不需要键盘或鼠标。AI 会跟踪手腕的位置,把手的动作变成一把切水果的虚拟刀刃。
任务: 在时间结束前切尽量多的水果,但要避开炸弹。
🎯 学习目标
完成本课后,你将能够:
- 用 AI 跟踪手的位置。
- 用手腕坐标控制角色。
- 用克隆体制作大量水果。
- 检测手和物体之间的碰撞。
- 制定得分、时间和生命的规则。
1. 准备游戏
Mục Trọng Tâm
角色
创建或选择以下角色:
| 角色 | 作用 |
|---|---|
刀刃 | 跟随手移动 |
水果 | 要切的物品 |
炸弹 | 要避开的危险物品 |
Mục Trọng Tâm
背景
选择简单的背景,让摄像头画面和角色都容易看清。
创建变量:
text
分数
生命
时间初始值:
text
当绿旗被点击
将 [分数] 设为 [0]
将 [生命] 设为 [3]
将 [时间] 设为 [60]2. 开启 AI 姿态检测
添加 Pose Detection 扩展,然后打开摄像头:
text
当绿旗被点击
开启视频,透明度 20%
重复执行
分析摄像头中的姿态为了玩得更好:
- 与摄像头保持适当距离。
- 让上半身和双臂都在画面中。
- 选择光线充足的地方。
- 留出足够的空间安全活动。
⚠️ 不要用力挥手,也不要站在易碎物品旁边。
3. 用手控制刀刃
创建两个变量:
text
手腕_X
手腕_Y用右手腕控制刀刃:
text
当绿旗被点击
显示
重复执行
分析摄像头中的姿态
将 [手腕_X] 设为
[右手腕的 x 坐标]
将 [手腕_Y] 设为
[右手腕的 y 坐标]
移到 x: [手腕_X] y: [手腕_Y]现在 刀刃 角色会跟着玩家的手移动。
如果左右方向反了,把 x 坐标变成负数:
text
移到 x: [0 - 手腕_X] y: [手腕_Y]4. 制作刀光拖尾
为了让刀刃留下一道短短的光痕,我们使用逐渐变淡的克隆体。每个克隆体停在刀刃之前的位置并慢慢消失,在后面形成一道拖尾。
在 刀刃 角色中添加:
text
当绿旗被点击
重复执行
克隆 自己
等待 0.03 秒text
当作为克隆体启动时
重复执行 10 次
将 [虚像] 特效增加 10
删除此克隆体重复 10 次后,克隆体完全透明并被删除,所以拖尾不会拖慢游戏。
💡 想要更长的拖尾,可以增加重复次数、减少每次的增加量,例如
重复执行 20 次,每次增加 5。5. 不断出现水果
用克隆体制作大量水果:
text
当绿旗被点击
隐藏
重复执行
等待 (在 1 和 2 之间取随机数) 秒
克隆 自己6. 切水果和计分
每个克隆体一边向上飞,一边在同一个飞行循环中检测碰撞。这样水果在飞行路线的任何位置都能被切到:
text
当作为克隆体启动时
移到 x: (在 -200 和 200 之间取随机数) y: -170
显示
重复执行直到 <y 坐标 大于 180>
将 y 坐标增加 8
右转 10 度
如果 <碰到 [刀刃]?> 那么
播放声音 [切开]
将 [分数] 增加 1
换成 [切开的水果] 造型
等待 0.2 秒
删除此克隆体
等待 0.03 秒
删除此克隆体每个水果只计一次分,因为克隆体被切后会立即删除。飞出舞台上边缘的水果也会被删除,避免游戏变慢。
想让水果飞得更自然,可以在每次循环中同时改变 x 和 y 坐标。
不同水果可以有不同分数:
| 水果 | 分数 |
|---|---|
| 苹果 | 1 |
| 橙子 | 2 |
| 西瓜 | 3 |
7. 添加炸弹
炸弹和水果一样出现,但会让玩家失去一条生命:
text
当作为克隆体启动时
移到 底部的随机位置
显示
重复执行直到 <y 坐标 大于 180>
将 y 坐标增加 7
右转 12 度
如果 <碰到 [刀刃]?> 那么
播放声音 [爆炸]
将 [生命] 增加 -1
删除此克隆体在 刀刃 角色中持续检查生命数:
text
当绿旗被点击
重复执行
如果 <生命 ≤ 0> 那么
广播 [游戏结束]
停止 [这个脚本]条件必须放在 重复执行 循环中。如果只在开始时检查一次,游戏永远不会发现玩家已经没有生命了。
8. 制作倒计时
text
当绿旗被点击
将 [时间] 设为 [60]
重复执行 60 次
等待 1 秒
将 [时间] 增加 -1
广播 [游戏结束]收到游戏结束消息时:
text
当接收到 [游戏结束]
说 (连接 "你的分数:" [分数]) 3 秒
停止全部9. 完整游戏规则
- 1玩家有
60 秒。 - 2移动手来控制刀刃。
- 3切水果得分。
- 4避免碰到炸弹。
- 5碰到炸弹失去一条生命。
- 6时间用完或生命耗尽时游戏结束。
🧪 项目检查
完成前,请检查:
- 刀刃正确跟随手腕。
- 摄像头没有意外翻转。
- 水果出现在不同位置。
- 每个水果只计一次分。
- 碰到炸弹会减少生命。
- 计时器每秒减少一次。
- 时间用完或生命耗尽时游戏停止。
- 点击绿旗可以重新开始游戏。
🧩 升级挑战
选择一个想法继续开发:
- 1分数越高,水果飞得越快。
- 2添加价值 5 分的金色水果。
- 3用双手控制两把刀刃。
- 4切中时添加一分为二的特效。
- 5制作最高分排行榜。
- 6添加开始画面和重玩按钮。
增加难度的例子:
text
如果 <分数 大于 10> 那么
缩短生成水果的等待时间
提高飞行速度✅ 记住
- 姿态检测能找到手腕的位置。
- 手腕坐标用来控制刀刃。
- 克隆体可以在不增加角色的情况下制作很多水果。
- 碰撞检测用来加分或扣生命。
- 变量保存分数、生命和时间。
- 摄像头需要充足的光线,AI 才能稳定跟踪动作。
Mục Trọng Tâm
快问快答
- 1用哪个关键点控制刀刃?
- 2为什么用克隆体制作水果?
- 3怎样让一个水果不被重复计分?
- 4什么情况下游戏会结束?