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.