[UE5] Character falls through procedurally generated Actor floor

I dynamically create a small procedurally generated hex landscape with perlin noise. It’s generated at runtime though I’m using the one generated in the editor. I also create a collision mesh at the same time so that I can use traces under the mouse and drag the camera around. This all works fine. So trace collisions work.

But when I place the prebuilt character in the Content drawer in the level and hit “run”, the character falls through the floor. I made sure both the character and floor block each other in the collision settings. No effect. I know collisions work for line traces. And it’s set to work for traces and physics. The character does not fall through the pre-built “floor” asset in the Content drawer.

Does the collision mesh need to be a fully enclosed volume for collisions to work? The collision mesh for the hex actor is just a simpler mesh of the original. But there’s no volume as there’s no underside. All the polygons point upwards. I’m at a complete loss here. I will try creating a box for the collision mesh to know if that works and then remove the bottom to see if it doesn’t work, but I’d like to know in better detail how collisions work. Can anyone confirm it has to be a volume or is there something else going on? I can’t find anything on the exact reason this wouldn’t be working right now.

Physics is off. If I turn it on, he turns into a ragdolls and flies off quickly into the distance.

I’m testing A* pathfinding AI Controller on the character. Not sure if that matters. But it’s not controlled by user input. I just want him to stand there to start.

Any help would be appreciated. Thanks!

(Note: I’ve looked through tons of other similar topic and could not find anything)

Hey there @AlienRenders! This sounds a bit odd, if the collision settings are set to block all for both and collisions are enabled for them (both query and physics) something else is wrong.

I think you might be running into an odd issue where the simple collisions are either not set up, or set up wrong. Also since you mentioned your mesh is single sided, you can enable double sided geometry in the static mesh. So first open up your mesh that you’re using and check for simple collision. If you have a simple collision, verify that it’s being used.



image

Let me know how it goes!

I tried to make a volume. No change. Double sided setting is on by default in the plugin I’m using (runtime mesh) for collision meshes.

I did find the setting for “Use Complex as Simple” and turning that on does work.

After some digging, I think I now understand how this runtime mesh plugin works. There’s a set of boxes or spheres you can set for the simple collision. Not sure why this isn’t working as I do set a bounding box. So setting “Use Complex as Simple” is likely bypassing the simple bounds check (or rather using the collision mesh instead of the bounding box). Not sure why the simple collision isn’t working.

Do you know if UE uses the simple collision before using the complex one?

Anyhow, thanks for the info. I’ll take a closer look at what’s actually being used for the simple bounds check.

It’s dependent on your project settings or the class you’re working with. Unreal base characters movement code and capsules look for simple iirc. Did your original mesh have a simple collision? If not, using complex for simple is fine unless the mesh is insane.