Situation: Our game has a character that can walk around inside a moving ship. We set up based movement so the character will pretty much always have a component of the ship as its base:
This worked—most of the time. However, there were still situations where jankiness showed. Most notably, if you moved to the back of the ship (relative to the direction of motion), the character would clip through the wall and fall out.
The solution? bFastAttachedMove
, a c++ only boolean flag in CharacterMovementComponent. The documentation says it disables checks for “non-moving world obstructions” when the character is on a moving base. As it turns out, the way that those checks are implemented is fundamentally broken. To set this flag, add GetCharacterMovement()->bFastAttachedMove = true;
to your character’s constructor.
Epic, please fix your movement code!!