2D AddForce vs. Velocity

I’m doing a 2D platformer, and I’m trying to figure out the best way to control movement. I have addforce and it works relatively well, except when you hold down whatever key, it keeps adding force, and I don’t really want that. I would like snappy controls that quit moving as soon as you let go of the key. I tried doing .velocity, and that was awesome, had the snappy controls but I fell incredibly slow and was no longer able to jump. I’ve also messed around a little with gravity and drag, but still not as responsive as velocity was. What do you recommend for snappy controls? Thanks in advance for your help!

Here’s my script currently (in C#):

using UnityEngine;
using System.Collections;

public class PlayerController : MonoBehaviour {

public float jump;

public float speed;
bool grounded = false;
public Transform groundCheck;
float groundRadius = 0.2f;
public LayerMask whatIsGround;

void Update () {

	if (grounded && Input.GetKeyDown ("space")){
		rigidbody2D.AddForce(new Vector2(0, jump), ForceMode2D.Impulse);
		//Debug.Log ("grounded/jump");
	}
}

void FixedUpdate(){

	grounded = Physics2D.OverlapCircle(groundCheck.position, groundRadius, whatIsGround);

	float moveHorizontal = Input.GetAxis ("Horizontal");

	
	Vector3 movement = new Vector3 (moveHorizontal,0.0f, 0.0f);
	
	rigidbody2D.AddRelativeForce (movement * speed * Time.deltaTime);
	//rigidbody2D.velocity = (movement * speed * Time.deltaTime);
	
}

}

rigidbody moves smoothly all the way and you need to put your restrictions.
i thing i would define is max speed and make sure that if velocity>maxVelocity, then velocity=maxVelocity (i know its V3, just set it to the params you see fit).

you can also put a ‘bool pushed = false’ var that turns true when mouse goes down and false when up.
only if pushed==false you add the force so in this way you can make sure that the 1st option will only happen once.