const dx = mx - p.x, dy = my - p.y;
if (Math.hypot(dx, dy) < RADIO) { // cerca: lo atrae
p.x += dx * 0.05;
p.y += dy * 0.05;
} else { // lejos: vuelve a casa
p.x += (p.baseX - p.x) * 0.06;
p.y += (p.baseY - p.y) * 0.06;
}
Cada punto recuerda su casa (baseX, baseY). Cerca del cursor se acerca al mouse; lejos, vuelve. Ese único if es toda la ilusión.