Improvements to AddImpulse (BP) for RootMotion

Based on this bug report and the discovery that *AddImpulse * is working as designed for RootMotion by ignoring impulses on X and Y, I’m submitting a change request.

In general the RootMotion of the active animation should probably override character component velocity on X and Y. But even this assumption is worth questioning as it would seem to be useful to optionally apply external forces or combine existing velocity with the RootMotion contribution in an additive or blended manner.

For example, imagine a character doing a lunging knife attack as RootMotion - she takes a couple of steps and drives the knife home. A spell or gust of wind applied as AddImpulse might should cause her to slide back a short distance all while continuing the attack animation. This seems like a decision best left to the game dev but right now AddImpulse is simply not an option while RootMotion is enabled.

Of course we want to maintain animation integrity when using RootMotion. But when circumstances call for the dev to knock back a character or to apply an impulse on specific bones that might have physics enabled / ragdoll blended - having AddImpulse and AddImpulse (Mesh) behaving as NOP is frustrating and limiting.



1 Like

To add

In a blueprint you can add a Rotate Root Bone node to rotate the player model with out the need for root motion animation and find it strange there there is not a Translate Root Bone node that could be used to accomplish the above.

Our need is with such a node our coder could place the player where it needs to be and when it needs to be there.

I revived this feature request here: Root motion anim to in place anim transition - add impulse / change root translation - Feedback for Unreal Engine team - Unreal Engine Forums

Need to override few methodes like ConstrainAnimRootMotionVelocity() on UCharacterMovementComponent in C++

see UCharacterMovementComponent | Unreal Engine Documentation

1 Like