How to prevent object from entering other colliders

I have a script that allows my player to pick up objects, if it meets a certain criteria:

	public void Pickup(GameObject item) {
		items = item.GetComponent<Renderer> ();
		theitem = item;
		ObjectSize = items.bounds.size.magnitude;

		carried = true;


	// Update is called once per frame
	void Update () {
		if (carried) {
		newitempos = gameObject.transform.position + Camera.main.transform.forward * range;
		theitem.transform.position = newitempos;

			if (Input.GetKeyUp(KeyCode.Mouse1)) {
				carried = false;
				theitem.GetComponent<Rigidbody> ().velocity =;

However, since the object’s motion is locked when it is being carried, it ends up going through other object’s colliders, that are too heavy to move, or aren’t allowed to move at all. I need a way to prevent this without causing too much work on the system.

This answer is based on the fact that your game sounds like a FPS; one thing that many games do is render objects that are being held by the main player on a separate camera that renders on top of everything else. This ensures that you can always see the item, and that it never accidentally culls with the environment.