I've added the modification logic to the original code. Please check:
Copy the following file to your theme:
vendor/magento/module-checkout/view/frontend/web/js/model/checkout-data-resolver.js
applyBillingAddress: function () {
var shippingAddress;
if (quote.billingAddress()) {
selectBillingAddress(quote.billingAddress());
return;
}
shippingAddress = quote.shippingAddress();
if (shippingAddress &&
shippingAddress.canUseForBilling() &&
(shippingAddress.isDefaultShipping() || !quote.isVirtual())
) {
if(quote.shippingMethod()['method_code']=='store pick_up code'){
//uncheck here
}else{
//check here
selectBillingAddress(quote.shippingAddress());
}
}
}
And also copy the following file to your theme:
vendor/magento/module-checkout/view/frontend/web/js/model/shipping-save-processor/default.js
saveShippingInformation: function () {
var payload;
if (!quote.billingAddress()) {
if(quote.shippingMethod()['method_code']=='store pick_up code'){
//uncheck here
}else{
//check here
selectBillingAddress(quote.shippingAddress());
}
}
payload = {
addressInformation: {
'shipping_address': quote.shippingAddress(),
'billing_address': quote.billingAddress(),
'shipping_method_code': quote.shippingMethod()['method_code'],
'shipping_carrier_code': quote.shippingMethod()['carrier_code']
}
};
payloadExtender(payload);
fullScreenLoader.startLoader();
return storage.post(
resourceUrlManager.getUrlForSetShippingInformation(quote),
JSON.stringify(payload)
).done(
function (response) {
quote.setTotals(response.totals);
paymentService.setPaymentMethods(methodConverter(response['payment_methods']));
fullScreenLoader.stopLoader();
}
).fail(
function (response) {
errorProcessor.process(response);
fullScreenLoader.stopLoader();
}
);
}
Don't forget to run static-content:deploy and cache flush.