Quick answer: Enable Damage on the GeometryCollection component, set the Damage Threshold on each fracture level to a value your impacts can exceed, enable Simulate Physics, and ensure fracture levels are configured in the GeometryCollection asset. For area destruction, add a Field System with an External Strain field.
Here is how to fix Unreal Chaos Destruction not fracturing. You create a GeometryCollection from a static mesh, fracture it in the editor with Voronoi, place it in the level, and shoot at it. Nothing happens. The mesh sits there undamaged. Chaos Destruction has multiple settings spread across the GeometryCollection asset, the component, and optionally Field System actors, all of which must be configured for fractures to trigger at runtime.
The Symptom
A GeometryCollection placed in the level does not fracture on collision or damage. Projectiles pass through or bounce off without causing any breakage. The mesh remains intact regardless of force applied.
Variant: the mesh fractures in the editor preview (Fracture > Test) but not at runtime. Or it fractures instantly on play without any input. Or only the first level fractures but sub-fractures do not trigger.
What Causes This
Enable Damage not checked. The GeometryCollectionComponent has an Enable Damage checkbox that defaults to false. Without it, collision forces are not evaluated for fracturing. The mesh can collide with objects but never breaks.
Damage threshold too high. Each fracture level in the GeometryCollection asset has a Damage Threshold. If the threshold is 1000 and your projectile applies 50 damage, nothing breaks. The applied force must exceed the threshold for that level.
Simulate Physics not enabled. The GeometryCollectionComponent must have Simulate Physics turned on. Without physics simulation, the fracture system does not process collision events and the mesh is treated as static decoration.
No fracture levels defined. Opening the GeometryCollection asset and applying Fracture (Voronoi, Radial, etc.) is required. If you only imported a mesh without fracturing it, there is one solid piece with nothing to break into.
Missing Field System for area effects. Impact-based fracturing works with collision alone, but explosion-style area destruction needs a Field System actor with an External Strain field to apply force over a radius.
The Fix
Step 1: Create and fracture the GeometryCollection. Right-click a Static Mesh in the Content Browser > Create > Geometry Collection. Open the asset. Select the root bone, then Fracture > Voronoi. Set the number of pieces (10–25 for typical props). Click Fracture.
For multi-level destruction (large chunks break into smaller pieces), select the first-level bones and apply a second fracture pass. Each level can have independent damage thresholds.
Step 2: Configure damage thresholds. In the GeometryCollection asset editor, select a fracture level in the Outliner. In Details, find Damage Threshold:
// Typical threshold values:
// Glass/fragile: 50 - 200
// Wood/medium: 500 - 1500
// Concrete/heavy: 2000 - 5000
// Metal/armored: 5000 - 20000
Start with low values (100–200) and increase until the breakage feels right. If nothing breaks, the threshold is higher than any force in your game.
Step 3: Enable damage and physics on the component. Select the GeometryCollectionComponent in the level. In Details:
- Check Simulate Physics
- Check Enable Damage
- Set Object Type to Destructible (or PhysicsBody)
In Blueprint or C++, you can also enable these at runtime:
// C++ — enable on BeginPlay
GeometryCollectionComp->SetSimulatePhysics(true);
GeometryCollectionComp->SetEnableDamageFromCollision(true);
GeometryCollectionComp->SetNotifyBreaks(true);
Step 4: Apply damage from projectiles. For projectile-based destruction, apply point damage or radial damage:
// Point damage on hit
void AProjectile::OnHit(UPrimitiveComponent* HitComp,
AActor* OtherActor, UPrimitiveComponent* OtherComp,
FVector NormalImpulse, const FHitResult& Hit)
{
UGameplayStatics::ApplyPointDamage(
OtherActor, 500.0f, GetVelocity().GetSafeNormal(),
Hit, GetInstigatorController(), this,
UDamageType::StaticClass());
}
// Radial damage for explosions
UGameplayStatics::ApplyRadialDamage(
GetWorld(), 2000.0f, ExplosionLocation, 500.0f,
UDamageType::StaticClass(), TArray<AActor*>(),
this, GetInstigatorController(), true);
Using Field Systems for Explosions
For area-of-effect destruction, place a Field System Actor near the GeometryCollection:
- Add a Field System Actor to the level
- Add an External Strain field component to it
- Set Magnitude to a value above the damage threshold
- Set Falloff type (Linear or Inverse) and radius
Activate the field at runtime to break everything within its radius:
// Spawn field system at explosion point
AFieldSystemActor* Field = GetWorld()->SpawnActor<AFieldSystemActor>(
FieldSystemClass, ExplosionLocation, FRotator::ZeroRotator);
Field->SetActorLocation(ExplosionLocation);
// Field auto-applies strain on spawn
Listening for Break Events
To trigger effects (particles, sound) when fracture occurs:
GeometryCollectionComp->SetNotifyBreaks(true);
GeometryCollectionComp->OnChaosBreakEvent.AddDynamic(
this, &AMyActor::OnFracture);
void AMyActor::OnFracture(const FChaosBreakEvent& Event)
{
UGameplayStatics::SpawnEmitterAtLocation(
GetWorld(), DebrisParticle, Event.Location);
UGameplayStatics::PlaySoundAtLocation(
GetWorld(), BreakSound, Event.Location);
}
“Enable Damage, lower the threshold, simulate physics. Three checkboxes between you and satisfying destruction.”
Related Issues
For general physics simulation, see Actor Replication Not Working for multiplayer destruction sync. For collision setup, Enhanced Input Action Not Firing covers related input-to-action patterns.
Fracture the mesh, enable damage on the component, set reachable thresholds. Then things break when hit.