Moving Platform Collisions only work while Other Actor is Moving?

Hey so I’ve got an odd problem involving a moving platform I’ve set up using a float curve and splines.

Standing on top of the platform isn’t an issue; things behave as expected while on top of them. It’s when another actor collides with the side of the platform things are weird.

Basically whenever an actor is in motion and collides with the side of the platform the collision and displacement of the actor is smooth as expected.

But if the actor is motionless, then the collision is jittery and the displacement is not smooth.

I’ve not had much success in trying to resolve this on my own. Anyone got any advice? My platform is a static mesh and is using the OverlapAllDynamic collision preset (that’s what it was automatically set to when i created the blueprint from my c++ class)

1 Like

Yes, there is this issue and has been forever. It seems that when standing still the collision is constantly updated only for the very bottom of the cylinder, not the entirety of it. If you make the cylinder taller and make the platform move at the top of it, it will go right through the character and not even move it.

Unfortunately I have no idea how to fix it, even though I spent several days looking for a solution some time ago. In one place where it was crucial I used a trigger box and a looping timer that adds a tiny world offset to the character, like 0.1, and it forces the engine to recalculate. But obviously you can’t use it everywhere.

I’ll stick around and see if someone knows something.

All right, so it’s been several days but i FINALLY found a fix:

in the moving platform’s Update routine:
• Set the static mesh’s world location, check for sweeping
• if a sweeping hit is detected, add a world offset to the affected object
• Set the static mesh’s world location again, without sweeping

It’s possible there may be issues later with multiple collisions, but for now this works perfect. Here’s a gif of it in action, plus my c++ code:

1 Like