v26110455 宝宝只小脚踢、每 10~28 秒一下(小腿/小胳膊不再动)
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
在静图上盖一张 WebGL 画布,同一张 PNG 原样画上去,只在「关节 → 手脚末端」这一小段做小角度旋转扭动,
|
||||
脸周围是保护圈(权重强制为 0),头和身子一像素都不动。
|
||||
· 每个阶段的关节位置手工标在 LIMBS 里(坐标 = 480×480 原图像素)。1、2 阶段是胚芽,没有手脚,不动。
|
||||
· 节奏(10-12 起只在孕 20 周起):每隔 4~9 秒随机挑一处(小腿 / 小脚 / 小胳膊),用 1.8~2.8 秒缓缓抬起再放回;
|
||||
· 节奏(11-05 起改为:只小脚踢,每 10~28 秒一下,见 plan())旧:(10-12 起只在孕 20 周起):每隔 4~9 秒随机挑一处(小腿 / 小脚 / 小胳膊),用 1.8~2.8 秒缓缓抬起再放回;
|
||||
偶尔小腿和小脚一起「蹬」一下。角度只有 3~9 度。不动的时候不重画(不占电)。
|
||||
· 跟 hero-fx.js 解耦:不改它,只盯 #heroStill 的 src / class —— 换阶段、淡入淡出都自动跟上。
|
||||
· 没 WebGL / 系统「减少动态效果」→ 什么都不做,静图照常。
|
||||
@@ -181,31 +181,30 @@
|
||||
}
|
||||
|
||||
// 安排下一次「动一动」
|
||||
/* 11-05 用户:「踢的动作都改成小脚踢,不要小腿、小胳膊动了,踢的时间改成每 10~28 秒间隔踢一下」
|
||||
→ 只动小脚(没标小脚的那一阶段用小腿代替,等于它的脚);小腿、小胳膊不再单独动;间隔 10~28 秒随机。
|
||||
音效、红心都跟着这一下小脚踢。LIMBS 里的 leg / arm 标注保留,以后要恢复把这里改回去即可。 */
|
||||
function plan() {
|
||||
clearTimeout(timer);
|
||||
timer = setTimeout(() => {
|
||||
if (ready && active() && cfg.l.length && (old() || DEBUG)) {
|
||||
let i = Math.floor(Math.random() * cfg.l.length);
|
||||
if (i === lastPick && cfg.l.length > 1) i = (i + 1) % cfg.l.length;
|
||||
lastPick = i;
|
||||
const now = performance.now(), l = cfg.l[i], dir = Math.random() < .5 ? -1 : 1;
|
||||
const dur = 1800 + Math.random() * 1000, deg = l[5] * (.6 + Math.random() * .4) * (DEBUG ? 4 : 1);
|
||||
moves.push({ i, t0: now, dur, amp: dir * deg * Math.PI / 180 });
|
||||
// 小腿动时 4 成概率小脚也跟着轻轻翘一下(像蹬了一下),稍晚 0.3 秒起
|
||||
const f = cfg.l.findIndex(x => x[6] === 'foot');
|
||||
if (l[6] === 'leg' && f >= 0 && Math.random() < .4)
|
||||
moves.push({ i: f, t0: now + 300, dur: dur - 200, amp: -dir * cfg.l[f][5] * .7 * (DEBUG ? 4 : 1) * Math.PI / 180 });
|
||||
if (l[6] === 'leg' || l[6] === 'foot') {
|
||||
kickSound(dur * .3);
|
||||
let i = cfg.l.findIndex(x => x[6] === 'foot');
|
||||
if (i < 0) i = cfg.l.findIndex(x => x[6] === 'leg');
|
||||
if (i >= 0) {
|
||||
const now = performance.now(), l = cfg.l[i], dir = Math.random() < .5 ? -1 : 1;
|
||||
const dur = 1800 + Math.random() * 1000, deg = l[5] * (.6 + Math.random() * .4) * (DEBUG ? 4 : 1);
|
||||
moves.push({ i, t0: now, dur, amp: dir * deg * Math.PI / 180 });
|
||||
kickSound(dur * .3); // 踢到最快那一下时响(缓起缓落,约 3 成处)
|
||||
kickUntil = now + dur + 800; // 踢的这段时间(+0.8 秒宽限)点脚弹红心
|
||||
kickIdx = [i]; if (f >= 0 && f !== i && moves.some(m => m.i === f)) kickIdx.push(f);
|
||||
} // 踢到最快那一下时响(缓起缓落,约 3 成处)
|
||||
kick();
|
||||
kickIdx = [i];
|
||||
kick();
|
||||
}
|
||||
}
|
||||
plan();
|
||||
}, DEBUG ? 900 + Math.random() * 600 : 4000 + Math.random() * 5000);
|
||||
}, DEBUG ? 900 + Math.random() * 600 : 10000 + Math.random() * 18000);
|
||||
}
|
||||
|
||||
|
||||
/* 11-05 用户:「当婴儿踢的时候,点击这个踢的位置,弹出一个实心的红心」
|
||||
→ 小腿 / 小脚正在动(含动完后 0.8 秒宽限)时,点到那只脚附近(以末端为中心、原图 70px 半径,手指粗所以放宽)就在点的位置弹一颗实心红心:
|
||||
放大弹出 → 往上飘 → 淡出,约 1 秒。小胳膊动、或没在踢的时候点,不弹。
|
||||
|
||||
Reference in New Issue
Block a user