Someone could correct me if I’m wrong. If what Stravant holds to be true about the 60 hz, 60 sps logic. You could make collision boxes on your car. One that is one stud out, one that is two studs out, and one that is three studs out. The 1 stud would detect items that are breakable at 60 sps or lower. The one that is two studs out would detect breaks at 120 sps or lower, and the third would detect at 180 sps or lower, and so on.
You could run touch events for breakable objects, and even label certain objects to only be breakable at higher rates of speed. (Make a bounding box around the breakable object, and label it as such: Break60, Break120, Break180)
Then use the bounding boxes around the car, detect when one of those are hit and detect the car’s speed. Also include a bounding box at the center of breakable object that should detect that an actual piece of the car has hit and broken it. If not, reset it back to a normal state.
When the bounding boxes touch, and the speeds are within the correct range, change the item over to the client to be broken. Then the way the object breaks is based on the overall Roblox physics to handle.
I could probably draft up an idea of what all this would look like if the way I’m explaining it sounds too stupid.
Edit: For bonus, you can also use collision groups with all this. Make one called unbreakable where if the speed is too low the object is anchored, and the car smacks right into it. Make one called breakable where the item can be broken, and when the center bounding box that detects the item has been broken, make a broken collision group (which will allow hit with the default collision group, but not the car/player collision group so the debris doesn’t affect the car, unless you want it to) And lastly, you could get rid of the debris after like 25-30 seconds, and then regen the broken object after a minute or two if you’d like that to be a feature.