2D Object Following Finger

hi. i have this code to controll my game object by finger in mobile phone. but it works only on objects that they have 3D Collider . my game is 2D and objects have 2DCollider . what should i do to fix it?

	//flag to check if the user has tapped / clicked.
	//Set to true on click. Reset to false on reaching destination
	private bool flag = false;
	//destination point
	private Vector2 endPoint;
	//alter this to change the speed of the movement of player / gameobject
	public float duration = 0f;
	//vertical position of the gameobject
	private float xAxis;

	void Start()
		//save the y axis value of gameobject
		xAxis = gameObject.transform.position.z;

	// Update is called once per frame
	void Update()
		//check if the screen is touched / clicked
		if ( (Input.GetMouseButton(0)))
			//declare a variable of RaycastHit struct
			RaycastHit hit;
			//Create a Ray on the tapped / clicked position
			Ray ray;
			//for unity editor
			ray = Camera.main.ScreenPointToRay(Input.mousePosition);
			//for touch device
			ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position);

			//Check if the ray hits any collider
			if (Physics.Raycast(ray, out hit))
				//set a flag to indicate to move the gameobject
				flag = true;
				//save the click / tap position
				endPoint = hit.point;
				//as we do not want to change the y axis value based on touch position, reset it to original y axis value
				endPoint.x = xAxis;

		//check if the flag for movement is true and the current gameobject position is not same as the clicked / tapped position
		if (flag && !Mathf.Approximately(gameObject.transform.position.magnitude, endPoint.magnitude))
		{ //&& !(V3Equal(transform.position, endPoint))){
			//move the gameobject to the desired position
			gameObject.transform.position = Vector3.Lerp(gameObject.transform.position, endPoint, 1 / (duration * (Vector3.Distance(gameObject.transform.position, endPoint))));
		//set the movement indicator flag to false if the endPoint and current gameobject position are equal
		/*else if (flag && Mathf.Approximately(gameObject.transform.position.magnitude, endPoint.magnitude))
			flag = false;
			Debug.Log("I am here");


I’m pretty sure that Raycasts have a completely different version (raycast2d) for 2D games, and the 3D raycast probably doesn’t interact with the 2D colliders. To solve your issue instead of raycasting you could instead try Physics2D.OveralpCircle which gets all objects within a radius of a point.