-- SETTINGS --
IsAnchored = false -- Set this to true if you want to make it unable to move before breaking welds
Speed = 25 -- The ammount of speed (in SPS) you need to reach to break welds
Remove = false -- Set this to true if you want to auto-delete destroyed blockade after a specified time.
RemoveTime = 10 -- How long (in seconds) before auto-deleting destroyed welds (if Remove is true)
-- SCRIPT --
local P = script.Parent
local mainPart = P.Main
local weldedParts = {}
table.insert(weldedParts,mainPart)
function Weld(x, y)
local weld = Instance.new("Weld")
weld.Part0 = x
weld.Part1 = y
local CJ = CFrame.new(x.Position)
weld.C0 = x.CFrame:inverse() * CJ
weld.C1 = y.CFrame:inverse() * CJ
weld.Parent = x
table.insert(weldedParts,y)
end
function WeldRec(instance)
local childs = instance:GetChildren()
for _,v in pairs(childs) do
if v:IsA("BasePart") then
Weld(mainPart, v)
script.Parent.Main.Anchored = IsAnchored
end
WeldRec(v)
end
end
WeldRec(P)
function onTouched(part)
local h = part
if h.Velocity.Magnitude >= Speed then
script.Parent.Main:Destroy()
wait(RemoveTime)
if Remove == true then
for _,v in pairs(weldedParts) do
if v:IsA("BasePart") then
v:Destroy()
end
end
end
end
end
script.Parent.Main.Touched:connect(onTouched)
This should, when a car hits it at over 25SPS, break all welds in a model.

1 comment
Try using "weldedParts:BreakJoints" somewhere in the script