All I’m trying to do is break a constraint (which works fine, the attached object falls) but then when I check if the constraint is broken it always returns false. This is easy to reproduce as there’s not much happening here.
After doing more tests it seems the physics constraint will only return broken if the constraint was broken by a physical force not manually in the BP using BreakConstraint
I have been testing with force breakage in 5.3 and it is not working. I cannot get the “Is Broken” to fire no matter what i do, Chat gave a great idea to use the Event and it does work.
Ah, the classic “Is Broken” not updating” issue in UE5’s Physics Constraints — I’ve seen that trip up a lot of developers.
Here’s why it happens and how you can fix or work around it:
Why “Is Broken” Might Not Be Working:
- Constraint is still technically “intact” in the engine’s eyes even if visually it looks broken (e.g., components flying apart due to a force).
- You may be using manual constraint break or setting properties like
ConstraintInstance.TermConstraint()
— these do not always update theIsBroken
boolean the way physical breaking does. - “Is Broken” only updates when the constraint is broken by physics (e.g., exceeding linear or angular break thresholds set on the constraint).
Checklist to Make It Work Properly:
1. Enable Constraint Breaking:
Make sure you’ve enabled the constraint to actually break based on thresholds:
plaintext
CopyEdit
In the Constraint Component:
✔️ Enable “Breakable”
🛠️ Set “Linear Break Threshold” or “Angular Break Threshold” to something reasonable
If you set it too high, it may never “technically” break.
2. Do Not Use Manual Break if You Rely on IsBroken
If you manually break the constraint via code like:
cpp
CopyEdit
ConstraintComp->BreakConstraint();
or
cpp
CopyEdit
ConstraintComp->ConstraintInstance.TermConstraint();
That will not set IsBroken
to true — because it skips the internal break logic Unreal uses to monitor that flag.
Solution: Set your own boolean to track manual breaks.
3. Use Blueprint Alternative to Detect Breaks:
If you need runtime detection:
- In the constraint component, go to Details → Events → On Constraint Broken (available in Blueprints).
- Bind a custom event to this — this is the most reliable way to track when physics breaks it.
blueprint
CopyEdit
OnConstraintBroken → Custom Event → Set “IsMyBreakHappened” = true
Debug Tip:
Use Print String
to output the value of Is Broken
every tick (just for testing), and apply increasing force. If it never changes, the constraint isn’t breaking the way UE expects.
Workaround Summary:
If you manually break the constraint, you’ll need to track the broken state yourself. Only physics-based breaking will update Is Broken
.
Want help wiring this up in Blueprint with a working OnConstraintBroken
event? I can send you screenshots.