# OnConstraintBroken not called after BreakConstraint

**URL:** <https://forums.unrealengine.com/t/onconstraintbroken-not-called-after-breakconstraint/479996>\
**Category:** World Creation\
**Tags:** unreal-engine, constraint, Physics, question\
**Created:** [March 9, 2021, 4:45pm UTC](https://forums.unrealengine.com/t/onconstraintbroken-not-called-after-breakconstraint/479996 "2021-03-09T16:45:04Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![RC-1290](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/rc-1290/32/261500_2.png) [@RC-1290](https://forums.unrealengine.com/u/RC-1290)\
**Post date:** [March 9, 2021, 4:45pm UTC](https://forums.unrealengine.com/t/onconstraintbroken-not-called-after-breakconstraint/479996/1 "2021-03-09T16:45:04Z")

</div>

Unreal Engine 4.26.1  
commit: 5df54b7ef1714f28fb5da319c3e83d96f0bedf08

To demonstrate this I created a scene with a cube constrained above another cube. If it hits the ground and breaks the constraint, it fires the event, and prints “Constraint Broken Event Fired”

 ![331919-capture.jpg](https://d3kjluh73b9h9o.cloudfront.net/original/4X/3/0/c/30c4360c19e3c9ed70d5198403e3010e3470982a.jpeg)

Calling BreakConstraint before the cube hits the ground only shows the “Performing Test” string. The constraint breaks but the event isn’t fired.

 ![331918-capture.jpg](https://d3kjluh73b9h9o.cloudfront.net/original/4X/4/a/3/4a38be3a94505f7e76cec45989ed48164114cd40.jpeg)

The test blueprint is a function that is marked as “Call in Editor”.

 ![331917-capture.jpg](https://d3kjluh73b9h9o.cloudfront.net/original/4X/6/6/3/663080b5668dbb9fd8da57dd83e1e3142c84ac58.jpeg)

The constraint event is on the Event Graph of the same blueprint.

 ![331916-capture.jpg](https://d3kjluh73b9h9o.cloudfront.net/original/4X/7/5/1/751a3ad6345f3abd83ee073cfa48e68fff2168c4.jpeg)

A workaround is to directly call the code following the event when performing a break. But the documentation does not mention that the OnConstraintBroken event is only called when the constraint breaks through forces, and not when broken through BreakConstraint.

My expectation was that the source of the break wouldn’t matter, or that the name or documentation would clarify the distinction.

---

<div class="post-metadata">

**Author:** ![RandomMayham](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@RandomMayham](https://forums.unrealengine.com/u/RandomMayham)\
**Post date:** [August 17, 2021, 8:46pm UTC](https://forums.unrealengine.com/t/onconstraintbroken-not-called-after-breakconstraint/479996/2 "2021-08-17T20:46:37Z")

</div>

I am also getting a similar error. Except in my project the event doesn’t fire when there is a linear break either. I am currently setting up everything through blueprints so the Physics Component is set and manually broken through the blueprint numerous times, but it can also be broken through a linear break. I am also setting up the event exactly as the user above.

In an attempt to work around this issue I have also checked the “Is Broken” node in a “Event Tick”. But no matter if the link is connected or broken it will always return “false”. This happens if I either break it myself or if it is broken from a linear force.

In either of these situations I can’t get the event to fire either when I manually break it or when I break it from a linear force.

---

<div class="post-metadata">

**Author:** ![xadamxful](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@xadamxful](https://forums.unrealengine.com/u/xadamxful)\
**Post date:** [May 28, 2024, 11:32pm UTC](https://forums.unrealengine.com/t/onconstraintbroken-not-called-after-breakconstraint/479996/3 "2024-05-28T23:32:46Z")

</div>

I am still having the same issue in 5.2, this was never fixed

---

<div class="post-metadata">

**Author:** ![emperor\_katax](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/emperor_katax/32/1070178_2.png) [@emperor\_katax](https://forums.unrealengine.com/u/emperor_katax)\
**Post date:** [February 11, 2025, 12:52am UTC](https://forums.unrealengine.com/t/onconstraintbroken-not-called-after-breakconstraint/479996/4 "2025-02-11T00:52:29Z")

</div>

This is my problem in 5.4, any solution?

---

<div class="post-metadata">

**Author:** ![JohnADaniels](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/johnadaniels/32/1080686_2.png) [@JohnADaniels](https://forums.unrealengine.com/u/JohnADaniels)\
**Post date:** [April 23, 2025, 2:41am UTC](https://forums.unrealengine.com/t/onconstraintbroken-not-called-after-breakconstraint/479996/5 "2025-04-23T02:41:04Z")

</div>

I have been testing with force breakage in 5.3 and it is not telegraphing that it has been broken.

From Chat: 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:**

1. **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).
2. You may be using **manual constraint break** or setting properties like `ConstraintInstance.TermConstraint()` — these do not always update the `IsBroken` boolean the way physical breaking does.
3. **“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

```auto
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

```auto
ConstraintComp->BreakConstraint();

```

or

cpp

CopyEdit

```auto
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

```auto
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.

---

<div class="post-metadata">

**Author:** ![RC-1290](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/rc-1290/32/261500_2.png) [@RC-1290](https://forums.unrealengine.com/u/RC-1290)\
**Post date:** [May 14, 2025, 4:00pm UTC](https://forums.unrealengine.com/t/onconstraintbroken-not-called-after-breakconstraint/479996/6 "2025-05-14T16:00:57Z")

</div>

You just pasted an AI response verbatim, didn’t you?

Neither the ‘solution’ nor the workaround suggested actually provide an event or a function call (in the case of my suggested workaround).

---

<div class="post-metadata">

**Author:** ![JohnADaniels](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/johnadaniels/32/1080686_2.png) [@JohnADaniels](https://forums.unrealengine.com/u/JohnADaniels)\
**Post date:** [May 15, 2025, 2:33am UTC](https://forums.unrealengine.com/t/onconstraintbroken-not-called-after-breakconstraint/479996/7 "2025-05-15T02:33:11Z")

</div>

LOL, yes that is Chat 🙂 I ended up manually breaking the constraints.
