Add a new "WeldConstraint.Breakable" property

As a Roblox developer, it is currently too hard to selectively choose which welds are able to be broken/destroyed by explosions or other outside influence. There is a DestroyJointRadiusPercent for explosions that would prevent welds from being destroyed, but this would occur globally and does not let me choose which welds should be “permanent” and which ones should be breakable.

In my scenario, I have a tram that is welded together and the primary part moved using TweenService, and I would like these welds to be completely unbreakable. But, I also have ground vehicles and other welds that I would like to be broken by explosions, not to mention the player. It is possible to write scripts to do this for you (such as taking advantage of the Explosion.Hit event and writing the functionality of breaking nearby joints yourself), but it seems a bit strange to me that it would be put on the developer to rewrite existing functionality just to add a property, and it’d be nice if this was a native feature of the engine.

21 Likes

Being able to control whether or not a specific joint is destructible would be useful behaviour for me as well.

Let’s say you have a mobile object, as in, its not Grounded. You might have something on that mobile object you want to be able to be exploded, but, you have to manually filter the objects yourself and connect to every explosion’s .Hit event, which is really inefficient, that event fires a million times and you’re either constantly watching for explosions or have some unified code to create them.

Being able to simply mark joints as non destructible would be a significantly better option as a developer and would probably not have to come at any significant performance cost (it might actually be more efficient).

As a little side note (not critiquing the suggestion), I think that this property could be confusingly named if its not made clear that its separate from :BreakJoints() so I think it makes sense if the property is named, for example CanBeExploded like CanCollide, CanTouch, CanBeDropped, etc because most properties don’t say, for example, Touchable, Collidable, or Droppable, and Breakable might get confused with :BreakJoints() since explosions use the same behaviour.

1 Like