Mouse Movement with physics

(2D) How can I make my player be controlled by the mouse position and still being able to stop if it hits a collider?

 public class Movement : MonoBehaviour
 {
     public float distance = 1f;
     public bool useInitialCameraDistance = false;
     private float actualDistance;
     public Rigidbody2D rb;
     public float force = 100f;
 
 
    void Awake ()
     {
         rb = gameObject.GetComponent<Rigidbody2D>();
     }
     
     // Start is called before the first frame update
 
    void Start()
     {
         if (useInitialCameraDistance)
         {
             Vector3 toObjectVector = transform.position = Camera.main.transform.position;
             Vector3 linearDistanceVector = Vector3.Project(toObjectVector, Camera.main.transform.position);
             actualDistance = (transform.position = Camera.main.transform.position).magnitude;
         }
         else
         {
             actualDistance = distance;
         }
         
     }
 
     // Update is called once per frame
     void Update()
     {
         Vector3 mousePosition = Input.mousePosition;
         mousePosition.z = distance;
         transform.position = Camera.main.ScreenToWorldPoint(mousePosition);
         Vector3 pos = transform.position;
         pos.z = 0;
         transform.position = pos;
 
     }
 
 }

Don’t use transform.position to change the objects position. Use Rigidbody.MovePosition to actually move
the object not teleport the object. This is how I would do it.