So I’m trying to make a destruction system with some trains, and currently, all weld destruction is based on explosions. However, collisions don’t faze my models at all. Is there a weld type or method to make welds on parts break when they’re hit at a certain speed? I remember seeing a Twitter post about this, but I can’t seem to find it anymore.
Current idea - although repetitive - is to create a script on every part which destroys all Weld descendants when impacted. I’d like to know if anyone has better ideas, or if this is just a part of default Roblox that I missed.
I came up with a little code snippet to do this for me. First, I weld all the parts in a model, then insert a script into the main part of the model.
local min = workspace.MinImpactSpeed.Value
--Sets a minimum from an IntValue in the workspace
local function jointbreak(part)
--Repetitive function that checks if the velocity on any combination of axes is big enough
if not part:IsDescendantOf(model.Parent) then
if (math.abs(model.AssemblyLinearVelocity.X) + math.abs(part.AssemblyLinearVelocity.X) >= min) or
(math.abs(model.AssemblyLinearVelocity.X) + math.abs(part.AssemblyLinearVelocity.Y) >= min) or
(math.abs(model.AssemblyLinearVelocity.X) + math.abs(part.AssemblyLinearVelocity.Z) >= min) or
(math.abs(model.AssemblyLinearVelocity.Y) + math.abs(part.AssemblyLinearVelocity.Y) >= min) or
(math.abs(model.AssemblyLinearVelocity.Y) + math.abs(part.AssemblyLinearVelocity.Z) >= min) or
(math.abs(model.AssemblyLinearVelocity.Z) + math.abs(part.AssemblyLinearVelocity.Z) >= min) then model.Parent:BreakJoints()
end
end
end
script.Parent.Touched:Connect(jointbreak) -- If touched at speed, break
I plan on replacing this function with the RigidConstraint once it’s complete. If anyone has suggestions, I’d be willing to try.