Player movement controls too slow

I’ve read many articles about this topic but I couldn’t find a good solution for this. All the tutorials use the addforce method on a rigidbody for controlling, seems like a good standard solution but no matter how I change the variables, the game controls are just crap. It takes the player a lot of time to get to his normal speed when using addforce in the fixedupdate method. It makes the controls too slow. I tried settigs the velocity of the player rigidbody directly and that made the controls very responsive, just like it should be. Of cause that’s only an appropriate solution if I don’t have any other physical forces influencing the player rigidbody.
Does anyone have an idea how to make the controls quick and responsive but not messing with the physics engine like when setting the velocity directly?
In a 2D game that I began earlier I had all the forces for every game character in a list, so each one could be modified seperately. This allowed me to modify only the player movement force but leaving everything else as it is. Is there a way to do this in unity?

In my experience, you never want to use addforce for player movement, unless you’re trying to make a simulation game. When you’re using AddForce, you’re essentially pushing the player character around the game world. Making that work well is really difficult. Setting the velocity directly is usually the best option. The physics system handles that completely fine.

Also, in the vast majority of games, when you stop holding down move, you want the player character to stop immediately, instead of when drag has made it stop five seconds later.

If you want the player character to accelerate to max speed instead of jumping directly to max speed, using Vector3.MoveTowards from the current velocity to the input velocity is a lot easier to adjust than AddForce:

Vector3 movementInput = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
rigidBody.velocity = Vector3.MoveTowards(rigidBody.Velocity, movementInput * characterSpeed, Time.deltaTime * accelerationSpeed);

You could do the same thing with Vector3.Lerp, which would make your player’s acceleration slow down as it approaches max speed.