This is affected by loading order.

In the case, display mesh was loaded firstly and try to build collision mesh form complex collision mesh asset. But the collision mesh didn't finished to make RenderData.

UStaticMesh::ContainsPhysicsTriMeshData returns nullptr, so the display mesh lose the collision mesh.

To Call ConditionalPostLoad on the collision mesh before building the collision on the display mesh can fix this issue.

// code placeholder
bool UStaticMesh::ContainsPhysicsTriMeshData(bool bInUseAllTriData) const 
     if (ComplexCollisionMesh && ComplexCollisionMesh != this)
         ComplexCollisionMesh->ConditionalPostLoad(); // !!! please add this line !!!
         return ComplexCollisionMesh->ContainsPhysicsTriMeshData(bInUseAllTriData);


Steps to Reproduce
  1. open attached[Image Removed] with 4.23
  2. (optional) remove all DDC (in Engine/DerivedDataCache foloder) and launch editor with -ddc=noshared
  3. start PlayInEditor
  4. move forward to hit a wall


Player doesn't hit the wall and does go through the mesh.



Have Comments or More Details?

There's no existing public thread on this issue, so head over toAnswerHub just mention UE-88957 in the post.

Login to Vote

Affects Versions4.234.24
CreatedFeb 18, 2020
UpdatedFeb 21, 2020