用一段提示词让 Gemini 制作手势交互游戏

2025-12-25 15:13:02
文章摘要
想做手势交互游戏但不会编程?这篇给了完整提示词,能让 Gemini 生成摄像头手势控制的射击游戏,还拆解提示词技巧、其他游戏模板和问题解决方案,新手也能快速上手制作游戏。

目录


前几天,我在刷到别人 Gemini 制作的游戏,居然能直接获取麦克风权限

你对着麦克风说话,游戏里就会有反应:例如一个山丘状的波形随声音变化,或角色跳得更高。

这让我产生了一个大胆的想法:既然能读取麦克风,那能不能读取摄像头权限,实现手势交互游戏?

结果真的可以。

只用一段提示词,就让 Gemini 生成了完整的手势射击游戏,利用摄像头实时检测手部动作,用食指控制准星,用捏合手势(拇指+食指)射击气球。


简单成品

1. 完整提示词

Create a browser-based balloon shooter with a sky background, using the webcam to track a user’s hand and control an on-screen pointer.

Core requirements

  1. Sky screen
  • Fullscreen sky backdrop (gradient + soft clouds OR skybox).
  • Subtle parallax and gentle cloud drift for depth.
  1. Balloons
  • Spawn balloons from the bottom and drift upward with slight side-to-side motion.
  • Different sizes (small = faster / worth more, large = slower / worth less).
  • Optional wind gusts that shift all balloons briefly.
  1. Hand pointer
  • Use real-time hand tracking from the camera.
  • Track index fingertip and map it to screen coordinates.
  • Render a crosshair/pointer at that position.
  • Add smoothing so the pointer doesn’t jitter (exponential moving average).
  1. Shooting
  • Shooting gesture: pinch (thumb + index) to fire.
  • Add a cooldown (e.g., 150–250ms) to prevent accidental rapid-fire.
  • When firing, do a raycast / hit-test from the pointer to balloons.
  • If hit: pop balloon + add score + combo streak feedback.
  1. Feedback
  • Pop VFX: quick burst particles + optional “rubber fragments.”
  • Small screen shake or micro “kick” on hit (subtle).
  • Sound toggle (pop + whoosh).
  1. UI (simple + modern)
  • Minimal HUD: score, combo, and a small “calibration” indicator.
  • Settings drawer: sensitivity, smoothing, spawn rate, difficulty, left/right hand selection.
  • Fallback controls: mouse pointer + click if camera isn’t available.
  1. Calibration & stability

Include a calibration step:

  • Ask the user to hold their hand in view and point to screen corners to fit mapping.
  • Handle low-confidence frames:
  • If hand not detected, fade crosshair and show “Hand not found” hint.


2. 提示词拆解:为什么这样写?


代码生成过程

这个提示词之所以能生成高质量游戏,核心在于完整需求描述

关键要素拆解

1. 背景

  • 全屏天空背景(渐变 + 柔和云朵 或 天空盒)
  • 细微视差和轻柔云朵漂移增加深度

为什么这样写?

  • 给出两种实现方案(渐变 OR 天空盒),让 AI 选择。
  • 强调视觉层次(视差、漂移),提升沉浸感。
  • 使用形容词修饰(细微、轻柔),控制效果强度。

可学习的技巧:

  • 描述视觉元素时,提供多种方案增加灵活性。
  • 动词描述动态效果(漂移、飘动、旋转)。
  • 强调深度感(视差、层次、景深)。

2. 游戏目标(气球)

  • 气球从底部生成并向上漂移,带轻微左右摆动
  • 不同大小(小 = 更快 / 分数更高,大 = 更慢 / 分数更低)
  • 可选风力突发,短暂移动所有气球

为什么这样写?

  • 明确运动逻辑(从底部向上 + 左右摆动)。
  • 建立难度机制(大小 → 速度 → 分数)。
  • 添加可选元素(风力),增加变化。

可学习的技巧:

  • 描述游戏对象时,说明生成位置、运动路径、消失条件
  • 等式表达机制(小 = 快 = 高分)。
  • 用**"可选"**标记非核心功能。

3. 游戏交互(手部指针)

  • 使用摄像头实时手部追踪
  • 追踪食指指尖并映射到屏幕坐标
  • 在该位置渲染准星/指针
  • 添加平滑处理,使指针不抖动(指数移动平均)

为什么这样写?

  • 指定追踪部位(食指指尖)。
  • 说明技术方案(映射到屏幕坐标)。
  • 解决常见问题(抖动 → 平滑处理)。
  • 给出算法提示(指数移动平均)。

这是整个提示词的核心!

可学习的技巧:

  • 描述输入时,明确捕获对象、处理流程、输出形式
  • 预判问题并在提示词中给出解决方案。
  • 提供算法名称而非实现细节(让 AI 自己实现)。

4. 射击(交互反馈)

  • 射击手势:捏合(拇指 + 食指)开火
  • 添加冷却时间(例如 150-250ms)防止意外快速射击
  • 开火时,从指针到气球进行射线检测 / 碰撞测试
  • 如果击中:气球爆炸 + 增加分数 + 连击反馈

为什么这样写?

  • 定义触发手势(捏合)。
  • 设置限制机制(冷却时间)。
  • 说明检测逻辑(射线检测)。
  • 描述反馈链(爆炸 → 分数 → 连击)。

可学习的技巧:

  • 交互设计要说明触发条件、执行逻辑、反馈效果
  • 时间参数约束行为(150-250ms)。
  • 链式描述表达因果关系(如果→那么→接着)。

5. 用户体验(反馈)

  • 爆炸视觉特效:快速爆裂粒子 + 可选"橡胶碎片"
  • 击中时小幅屏幕震动或微小后坐力
  • 声音开关(爆炸音 + 呼啸声)

为什么这样写?

  • 描述视觉反馈(粒子特效)。
  • 添加触觉反馈(屏幕震动)。
  • 包含听觉反馈(声音)。
  • 强调强度控制(细微、小幅)。

可学习的技巧:

  • 反馈要覆盖视、听、触三个维度。
  • 形容词控制反馈强度(避免过度)。
  • 提供开关选项(让用户控制体验)。

6. UI

  • 极简 HUD:分数、连击、和小型"校准"指示器
  • 设置抽屉:灵敏度、平滑度、生成速率、难度、左/右手选择
  • 回退控制:如果摄像头不可用,使用鼠标指针 + 点击

为什么这样写?

  • 定义UI 层级(HUD vs. 设置)。
  • 列出必要信息(分数、连击、校准)。
  • 提供可调参数(灵敏度、难度等)。
  • 包含回退方案(摄像头失败 → 鼠标)。

这是提示词的亮点!

可学习的技巧:

  • UI 设计要区分常驻信息 vs. 可选设置
  • 列出所有可调参数(让用户自定义体验)。
  • 必须包含回退方案(处理硬件不可用情况)。

7. 校准与稳定性(边界处理)

包含校准步骤:

  • 要求用户将手保持在视野内并指向屏幕角落以适配映射
  • 处理低置信度帧:
    • 如果未检测到手,淡出准星并显示"未找到手"提示

为什么这样写?

  • 添加初始化流程(校准)。
  • 处理异常情况(手检测失败)。
  • 提供用户引导(明确操作步骤)。

可学习的技巧:

  • 永远考虑边界情况(如果 X 失败,怎么办?)。
  • 提供明确的用户指引(而非技术报错)。
  • 渐变效果处理状态切换(淡出而非消失)。

3. 从这个提示词能学到什么?


Gemini

1. 结构化描述法

传统错误写法:

做一个用手势控制的射击游戏,要有气球和分数。

正确写法(结构化):

[游戏概述] ↓ [核心模块 1:背景]

  • 具体要求 A
  • 具体要求 B [核心模块 2:目标]
  • 具体要求 A
  • 具体要求 B ...

关键原则:

  • 数字标号分隔模块(1. 2. 3.)。
  • 短横线列举细节(- - -)。
  • 括号补充说明(例如、或、如果)。

2. 技术提示法

不要写:

让指针不要抖动

应该写:

添加平滑处理,使指针不抖动


更多技术提示词示例:

需求 技术提示
流畅动画 使用 requestAnimationFrame 实现 60fps 动画
碰撞检测 使用边界框(AABB)或圆形碰撞检测
粒子效果 生成 20-50 个粒子,带随机速度和透明度衰减
音效 使用 Web Audio API,预加载音频文件
数据持久化 使用 localStorage 保存最高分

4. 还能做哪些手势游戏?

掌握了这个提示词的结构,你可以创作无数手势交互游戏,以下游戏作者还没试过。

1. 水果忍者

核心改动:

  • **追踪对象:**整个手掌(而非食指)。
  • **交互手势:**快速挥动(检测手部速度)。
  • **游戏对象:**从两侧飞入的水果。
  • **反馈:**切割轨迹、果汁飞溅。

提示词模板:

创建一个水果忍者游戏:
- 追踪手掌中心坐标和移动速度
- 当速度超过阈值时,绘制挥砍轨迹
- 水果从屏幕两侧随机抛物线飞入
- 如果轨迹与水果相交,切开水果并产生果汁粒子

2. 接球游戏

核心改动:

  • **追踪对象:**手掌。
  • **交互方式:**手掌水平移动 → 控制接球篮筐。
  • **游戏对象:**从顶部掉落的球。
  • **难度:**球的速度逐渐加快。

提示词模板:

创建一个接球游戏:
- 追踪手掌中心的 X 坐标
- 在屏幕底部渲染一个篮筐,X 坐标跟随手掌
- 球从顶部随机位置掉落
- 如果球落入篮筐范围,得分并生成新球
- 难度递增:球的掉落速度逐渐加快

3. 飞机躲避游戏

核心改动:

  • **追踪对象:**食指。
  • **交互方式:**食指 XY 坐标 → 控制飞机位置。
  • **游戏对象:**从右侧飞来的障碍物。
  • **挑战:**避开障碍物,坚持更长时间。

提示词模板:

创建一个飞机躲避游戏:
- 追踪食指指尖的 XY 坐标
- 在该位置渲染一架小飞机
- 障碍物(如陨石、导弹)从右侧飞入
- 如果飞机碰到障碍物,游戏结束
- 记录生存时间作为分数

4. 音乐节奏游戏

核心改动:

  • **追踪对象:**双手(左手和右手分别)。
  • **交互手势:**握拳 = 击打。
  • **游戏对象:**从顶部下落的音符。
  • **挑战:**在音符到达判定线时握拳。

提示词模板:

创建一个音乐节奏游戏:
- 追踪左右手的握拳状态(检测手指弯曲度)
- 音符从顶部分两列下落(左列、右列)
- 底部有判定线
- 当音符到达判定线时,如果对应手握拳,判定为成功
- 根据时机准确度给予 Perfect / Good / Miss 评价

5. 常见问题与解决方案

问题 原因 解决方案
手部追踪不稳定 光线不足或背景复杂 在提示词中要求添加"环境检测"和"背景模糊"功能
指针抖动严重 缺少平滑处理 明确要求使用"指数移动平均"或"卡尔曼滤波"
射击手势误触 检测阈值不合理 要求添加"冷却时间"和"捏合距离阈值调节"
性能问题(卡顿) 粒子效果过多 要求"根据设备性能动态调整粒子数量"
左撇子无法使用 默认右手映射 要求添加"左/右手选择"设置
校准不准确 缺少校准步骤 要求添加"四点校准"或"自动边界检测"

6. 结语

这是我在其他论坛上看到的游戏,同样由 Gemini 制作,但更加精致。


同类作品展示

你不需要会写 JavaScript,只要一段需求描述,Gemini 就能帮你做小游戏。

现在,打开 Gemini,开始创作你的第一个手势游戏吧!

声明:该内容由作者自行发布,观点内容仅供参考,不代表平台立场;如有侵权,请联系平台删除。
标签:
多模态交互
生成式大模型