It is done by CharacterMovementComponents
's UpdateBasedMovement
. It’s virtual
, so you can just override it (or MaybeUpdateBasedMovement
) and do your own logic / conditions.
AFAIK there’s no proper way to do it purely in blueprints (but I might be wrong).