让打击有分量:用 AI agent 给网页游戏加打击感
震屏、命中停顿、闪白、伤害数字,以及怎么让 coding agent 接进去又不把游戏弄得发卡。
"打击感"(juice)就是让一个动作爽起来的反馈:镜头一震、敌人闪白、画面停几帧、数字飞出来。agent 一般不会主动加;加了也容易加过头。用 skill 可以同时解决这两个问题:代码是调好的,规则也写清楚了。
四层反馈
- 创伤值震屏:每次命中加创伤值(0–1),震幅取创伤值的平方,每帧衰减。小伤几乎不动,大招能叠起来。
- 命中停顿:重击时冻结逻辑 70–160 毫秒,超过 200 毫秒就像卡顿。
- 闪白和挤压:目标纯白绘制一两帧,沿受击方向短暂压扁。
- 火花和数字:命中点出火花,伤害数字弹出上飘。
经验:轻击要多、要快、要便宜;命中停顿和闪屏只留给重击和击杀。
用 hit-juice skill
先安装(见安装教程),再对 agent 说:
用 hit-juice skill,接到我们的伤害函数:普攻 light,蓄力 heavy,暴击 crit,最后一击 kill。
skill 会让 agent 先找主循环和伤害函数,再加入大致这样的代码:
const juice = createJuice();
function loop(raw) {
const dt = juice.step(raw); // 命中停顿期间 dt 为 0
update(dt);
juice.applyCamera(ctx, W, H);
drawWorld();
juice.drawFx(ctx);
ctx.restore();
juice.drawOverlay(ctx, W, H);
}
// 伤害函数里
juice.hit(x, y, 'heavy', { entity: enemy, dirX: 1, damage: 42 });
自检
- 连打 10 次:无 console 报错,游戏不会有卡住的感觉。
- 系统里打开"减少动态效果":镜头不应再震。
- 用手机尺寸(390×844)试:低端设备会自动减少粒子。
可以在 hit-juice 页面直接试在线演示。