For anybody reading this. I was using TopDown character like the OP here, and it takes a combination of GetControlRotation+GetForward/Right Vector of the controler to apply Forward/Right. When the character steps on something the vector changes and messes everything up. The way to solve it is to force the Movement Input to X = 1 for forward and Right to Y=1, and to delete the GetControlRotation and GetForwardVector al together. That way the directions are absolute, which is what you want since it is relative to a fixed rotation camera.
Cheers.