Quick answer: After FSkeletalMeshMerge, call MergedComp->SetPhysicsAsset(BaseCharacter->GetPhysicsAsset()). Copy collision presets and CollisionEnabled from the source component.

Modular character system merges body parts into one SkeletalMesh. Looks great. Falls through the floor — merged mesh has no Physics Asset.

The Symptom

Merged character renders correctly but no collision, no ragdoll, no hit detection. Source character (with the same skeleton) collides fine.

The Fix

UPhysicsAsset* PA = BaseCharacter->GetPhysicsAsset();
USkeletalMesh* Merged = ...;   // from FSkeletalMeshMerge::DoMerge
Merged->SetPhysicsAsset(PA);

USkeletalMeshComponent* MergedComp = Character->GetMesh();
MergedComp->SetSkeletalMesh(Merged);
MergedComp->SetPhysicsAsset(PA);
MergedComp->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics);
MergedComp->SetCollisionProfileName(FName("Pawn"));

SetPhysicsAsset on both the SkeletalMesh asset and the component to be safe. SetCollisionEnabled + profile re-establish collision behavior.

Collision Presets

Copy from the original component:

MergedComp->BodyInstance.CopyBodyInstancePropertiesFrom(&Original->BodyInstance);

Copies all collision response channels, simulation settings, and damping.

Verifying

Show Collision in viewport (P key). Merged character should display the per-bone collision shapes from the Physics Asset. Walk into a wall — collide.

“Re-assign Physics Asset. Re-set collision profile. Merged character collides.”

Related Issues

For Physics Asset constraints, see constraint jitter. For Niagara skeletal stale, see Niagara skel.

PA reattached. Collision returns.