小时候看《龙珠》的时候,我一直很喜欢一种很具体的画面
那种很细节的战斗控制感
手指一抬,能量球在空中拐弯
对手明明以为躲开了,下一秒又被追上
整个战斗不是平的,而是有距离、有压迫、有节奏的
周末,刚好借着ChatGPT新版本发布,快速做一版
这种只存在于动漫里的“操控感”,能不能真的在电脑前做出来?
于是我用摄像头、手势识别、前端动画和一套状态机逻辑,做了一个互动系统:
(这次完全用自然语言和AI沟通,看看最终能做出什么样的效果)
- 人站在电脑前
- 手指对着摄像头移动
- 屏幕里的操气弹会跟着你的手指走
- 左边是 Goku,右边是魔人布欧
- 布欧不会傻站着挨打,而是会逃、会累、会撑不住
- 最后被操气弹追上,原地爆炸
它不是一段剪好的视频,也不是一张会动的图。
它是真的可以交互、可以运行、可以不断打磨的一套系统。
先看效果(它开始有了那种小时候看动漫时才会有的感觉——不是“看到了一个技能”,而是我真的在控制这个技能)
这个项目到底做了什么?
如果用一句话说清楚,它其实是:
一个“手指控制操气弹”的互动系统。
但如果展开一点,它其实分成了四层。
第一层,是输入
摄像头识别手指位置。
手指往哪边动,操气弹就往哪边飞。
这个听起来最直观,但其实它只是入口。
第二层,是角色反应
布欧不是静态站在那里等你打。
我给它做了一整套状态变化:
idlealertevadetiredexhausted
也就是说,它不是“会动”,而是“会反应”。
第三层,是空间感
我没有把它做成单纯的左右平移。
人物、操气弹、爆炸、烟雾,都尽量加了上下左右前后的空间关系。
这样整个场景会更像一个有深度的擂台,而不是平面拼贴。
第四层,是演出感
这个东西真正难的,不是“它能不能动起来”。
而是:它动起来以后,像不像一场战斗。
**01.**项目总览图
图 1:整个互动系统的基本场景。左侧 Goku,右侧 Buu,中间是可由手指控制的操气弹。
**02.**我后来发现,最难的根本不是“手势识别”
很多人第一反应会觉得,这种项目最难的是摄像头识别手势。
其实不是。
手势识别当然很重要,但它更像是一个“输入设备”。
真正做起来费劲的,是下面这些更微妙的东西。
- 操气弹怎么跟手,但又不能像鼠标指针
如果完全刚性跟随,它会很假。
如果太迟钝,又没有那种“我在控制它”的感觉。
所以最后调的不是“能不能动”,而是:
- 远距离更快
- 近距离更稳
- 有一点惯性
- 但又不会拖泥带水
- 布欧不能像木桩一样站着
如果 orb (操气弹)一靠近,Buu 原地不动,那整个作品体验就差了很多。
所以后面我用自然语言给它做了一整套反应逻辑:
- 看到危险会警觉
- 快碰到时会闪避
- 一直逃会疲劳
- 最后真的撑不住,变成 exhausted
- 这时再碰到,才允许爆炸
- 切图不能硬切
这是很多交互项目特别容易暴露廉价感的地方。
比如:
- orb 一近,Buu 立刻切躲避
- 下一帧条件没了,又切回来
这种观感特别像程序,不像角色。
所以后面我专门加了:
- enter delay
- hold time
- transition
- 起伏感
让角色的状态切换更像身体反应,而不是条件判断。
**03.**状态机示意图
idle → alert → evade → tired → exhausted → hit
(这次用AI作图效率有些低,除了爆炸的换了图,其他都省事用的同一张图)
图 2:Buu 不是简单平移,而是在一套状态机里完成“警觉—闪避—疲劳—力竭—爆炸”的过程。
04. 真正让这个项目开始好玩的,是“差一点打中”
一开始我做的时候,逻辑其实很直白:
碰到就爆炸。
结果做出来以后,技术上没问题,观感上却很无聊。
因为整个过程只剩一个结论:
碰到了,炸了。
没有戏。
后来我把前期逻辑改了:
buu-idlebuu-alertbuu-evadebuu-tired
这几个阶段,操气弹都不能真正打爆它。
只要 orb 快接近,它就会立刻远离。
有时候是快速闪开,有时候甚至会像“瞬间移动”一样换到更远的位置。
结果一下就不一样了。
因为你看到的不再是“命中判定”,而是:
追逐、压迫、反应、脱离、再追逐。
直到最后,Buu 真的累了,进入 buu-exhausted。
这时 orb 再碰到它,才会立刻爆炸。
这一下,整个节奏就顺了。
前面是戏。
后面才是结局。
**05.**前期追逐
视频 2:前期阶段,操气弹不断逼近,但布欧始终会在最后一小段距离内立刻闪开。
**06.**为了让它更像“战斗”,我反复修了很多小地方
很多时候,项目从“能运行”到“有质感”,差的不是大功能,而是小细节。
- 把人物重新拉回左右两边
有一版里,Goku 和 Buu 一度被我调得太靠中间。
画面看起来整齐,但没有战斗区。
后来我还是把它改回来了:
- Goku 明显在左
- Buu 明显在右
- 中间留出大块空间给 orb 和追逐动作
这种构图一下就对了。
- 更加了2.5D空间感
这个看起来像小事,其实也挺影响观感。
如果人物移动大小一样,那就缺少了空间感,
后面我把这些做了微调。
- exhausted 后,爆炸必须够果断
另一个我后来专门修的,是最终命中的响应速度。
如果 orb 已经碰到 exhausted 的 Buu,
代码却还在等 prehit、hold、缓冲、确认,
观众会明显感觉到:
“怎么碰到了还不炸?”
后面我把 exhausted 状态下的命中优先级单独提到了最高。
只要接触,马上锁定命中点,直接进爆炸链。
这一下整个结尾就利落了很多。
**07.**优化前后对比
图 3:真正影响质感的,往往不是某个大功能,而是这些容易被忽略的小修正。
**08.**最终命中爆炸
视频 3:当前期追逐结束、布欧进入 exhausted 状态后,操气弹一接触就会立即触发爆炸。
后面我也用MiniMax测试了一版,效果也不错
图 3:MiniMax版本效果
**09.**这个项目最让人兴奋的地方
虽然这只是一个Demo,但让我上头的,不是“做了这个操控效果”。
而是我越来越清楚地感受到:
有了AI工具后,只要我们有奇思妙想,可玩性是非常多样的。
记得十几年前做类似的互动类效果,还在研究Opencv和各种开源代码
调试不同型号摄像头驱动
当时很多人觉得,做产品、做系统,第一步一定得先学代码。
但现在不是了,只要电脑里装上一套强大的 AI 工具,再加上点想象力,你完全可以像画画、搭积木一样,从零开始,先搭出一个属于自己的最小 MVP,亲手把一个想法变成可以体验、可以迭代的东西。
随着 AI 持续进化,想法和现实之间的距离,正在被快速缩短。很多过去只能想一想的东西,未来都会越来越容易被我们亲手做出来。
这个过程很难不让人着迷。
这个系统后面还可以有很多打磨的地方,比如:
- 让空间感更强
- 让人物演出更自然
- 让 orb 的前后纵深更明显
- 让爆炸、烟雾和舞台之间的关系更真实
但至少现在,它已经从一个想法,变成了一个真的能玩的东西。
如果你对这种玩法也感兴趣,欢迎点个赞,**** 给我一点鼓励。也欢迎在评论区聊聊你的脑洞和想法。需要 prompt 的话,我后面会放一个版本在公众号评论区。
谢谢你看到最后,我们下次见。
(说明:本文部分配图及演示内容素材由 AI 辅助生成,内容已由本人审核并修改。文中涉及的角色与设定 仅作灵感来源讨论与技术演示交流,不代表任何官方立场)