How can I detect touch on a Mesh Collider on an Android device ?

Hi, In my game, upon touching a mesh collider I want the game object of the mesh collider to get destroyed. I am using Unity 5.3.2 free version.
I am attaching the code :

void Update () {
	foreach (Touch t in Input.touches) {
		if (t.phase == TouchPhase.Began) {
			if (gameObject.GetComponent<Collider> ().Raycast (Camera.main.ScreenPointToRay (t.position), out hit, Mathf.Infinity)) {
				Destroy (gameObject);
			}
		}
	}
}

Hello,

This code should works. (Note that is your not using multitouch, there is no reason to test all the touches, the index 0 will be fine)

void Update()
{
  if (Input.touchCount >= 1) 
  {
     // The pos of the touch on the screen
     Vector2 vTouchPos = Input.GetTouch(0).position;
        
     // The ray to the touched object in the world
     Ray ray = Camera.main.ScreenPointToRay(vTouchPos);
        
     // Your raycast handling
     RaycastHit vHit;
     if(Physics.Raycast(ray.origin,ray.direction, out vHit))
     {
         if(vhit.transform.tag == "sharkBody") 
         {
            Destroy (vHit.collider.gameObject);
         }
     }
 }
}

Have you tried this:

RaycastHit hit;

void Update () {
	foreach (Touch t in Input.touches) {
		if (Physics.Raycast (Camera.main.ScreenToWorldPoint (new Vector3(t.position.x, t.position.y, 1f)), Vector3.forward, out hit, Mathf.Infinity)) {
			if(hit.transform.tag == "sharkBody") {
				Destroy (hit.transform.gameObject);
			}
		}
	}
}

Thanks everybody for their contributions. The answer given by @Blue Cut is right. The problem was that my game object’s collider was a non-convex mesh collider and they don’t respond to raycasts. I simply replaced that collider with a sphere collider and it worked.
thanks again.