Help with snappy addforce movment

Hi, im making a game that uses physics for everything, and i need a character controller. the character controllers ive tried with rigidbody.velocity seem to not work with hinges. So ive resorted to using addforce. it works fine, but the character seeems to slide around a lot. is there a way to apply countermovment when i stop pressing a movment button?

Code

if (Input.GetKey(KeyCode.W))
        {
            playerBody.AddForce(transform.forward * movSpeed);
        }
        if (Input.GetKey(KeyCode.D))
        {
            playerBody.AddForce(transform.right * movSpeed);
        }
        if (Input.GetKey(KeyCode.S))
        {
            playerBody.AddForce(transform.forward * -1 * movSpeed);
        }
        if (Input.GetKey(KeyCode.A))
        {
            playerBody.AddForce(transform.right * -1 * movSpeed);
        }

You could try this;

For instant stop: gameObject.GetComponent().velocity = Vector3.zero;
And for soft stop: gameObject.GetComponent().velocity = gameObject.GetComponent().velocity * 0.9f;

You can also set your floor dynamic material to have maximum friction.

  1. Check the force mode of add force.
    1.1 I use force mode.aceleration.
    (Suit me for my needs. You have 4 diferent mode.)

  2. If you haven’t done so, add physic material to your surrounding and your player.

  3. If it’s still slide, but you like the way it move when it move, add 0.5 to the drag in the rigid body of the player. That should do it.