下载 App
《千羽 · 涌现》开发日志 ②|三条规则和三十个数字
上篇说了概念,这篇讲最硬核的部分:让鸟"活"起来的物理。
Boids 的代码其实一个下午就能写完。真正花时间的是调参——分离、对齐、聚齐三力的半径和权重,决定你的鸟群是"一支军队"、"一锅粥"还是"一群鸟"。分享几组实测结论(420×760 竖屏、120 鸟、60fps):
1. 分离力必须是"短而尖"的。 分离半径 20px、权重 0.06。半径一旦超过 30,鸟群永远稀稀拉拉聚不起来——每只鸟都在过度躲闪。分离就该只管"别叠在一起"这一件事。
2. 对齐和聚齐半径要大于分离半径的两倍。 对齐 42px、聚齐同半径。这样每只鸟的"社交圈"里,远处的同伴负责"我们是一个集体",近处的同伴只负责"别撞上"。层次感就出来了。
3. 逃离力权重是引力的 150 倍。 灯火引力 0.0021,猎手逃离 0.32。这不是 bug 是天性:鸟可以不理你,但绝不能不怕死。于是"被猎手追着的鸟群不听指挥"成了涌现出来的难度曲线,不需要写一行难度代码。
4. 转向力上限比最大速度更重要。 MAXACC=0.20 的截断是所有参数里最"隐形"的:没有它,鸟会瞬间掉头,群体看起来像抽搐的粒子;有了它,每一次转向都是一条弧线——弧线就是生命感。
5. 最意外的收获:灯光要"追不上"手指。 早期版本灯直接贴着鼠标/手指,快速甩动时鸟群被撕成两半(一半还没收到"新灯位"的引力)。改成灯以 lerp 0.35 平滑追赶目标点后,手感立刻质变——灯变成一个有质量的实体,鸟群的追随也变得连贯。手感类 bug 的修复方案常常在物理层,不在输入层。
调参的终极标准只有一个:盯着屏幕看 10 秒,如果忘了这是三角形,就对了。







