Raycast for touch

public class FrontMenu : MonoBehaviour {
private Ray ray;

private RaycastHit hit;	
	
void Update () {
		Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
		    if (Physics.Raycast(ray, out hit) && Input.GetMouseButtonDown(0) && hit.transform.name == "Play")
			    if(hit.transform.name == "Play")
				    Application.LoadLevel(1);
		
	
	}
}

My game is set up in a fashion where I need to touch the screen in several different places at once, so I need to change what the raycast code I have been using (above) to a touch version that allows me to have multiple touches.
Can anyone point me in the right direction on this?

Change this:

Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

To something like this:

Ray ray = Camera.main.ScreenPointToRay (Input.GetTouch(0).position);

Btw i asked a simillar question a bit time ago :wink: Destroying object by touch on Android? (JS) - Unity Answers
Howewer I can’t be sure if that will work for c#, I am just giving you an idea of doing things :slight_smile:

Try this one,

void Update () {
        if ((Input.touchCount > 0) && (Input.GetTouch (0).phase == TouchPhase.Began)) {
            Ray raycast = Camera.main.ScreenPointToRay (Input.GetTouch (0).position);
            RaycastHit raycastHit;
            if (Physics.Raycast (raycast, out raycastHit)) {
                Debug.Log ("Something Hit " + raycastHit.collider.name);
                switch(raycastHit.collider.name) {
                    case "Level1": Debug.Log("Level1 selected"); break;
                    case "Level2": Debug.Log("Level2 selected"); break;
                    case "Level3": Debug.Log("Level3 selected"); break;
                    case "Level4": Debug.Log("Level4 selected"); break;
                    case "Level5": Debug.Log("Level5 selected"); break;
                    default: Debug.Log("Wrong level selection");
                }
            }
        }
    }