Adding external forces to a character controller?

I’ve got an issue, I’m making a 2d movement system using the character controller, and I’d like to be able to add forces to the character while still keeping control. I know that games like TF2 can do this, but I’m having trouble as the X velocity is always set to the players input. What can I do?

Well clearly you need to change the piece of code that does this.

Maybe make the input not directly set the velocity. Maybe make it influence the existing velocity instead.

Yeah that’s what I mean, I’m just struggling to figure out the math for that. If I add it, then he goes super fast. I could cap that afterwards but I want explosions and other forces to be able to push him beyond that cap.

Any idea how to do this?