Touch object problem

Hey. I want to touch object and create a cube. When I use Physics.Raycast I cant create cube. Object is not detect touchs.
Sorry for my bad english. Here is my code.

var ballSpawn : Transform;
var ball : GameObject;

function Update () {
	if(Input.touchCount > 0  Input.GetTouch(0).phase == TouchPhase.Began){
		var ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position);
		var hit : RaycastHit;
		if(Physics.Raycast(ray, hit)){
			if(hit.collider.name == "cannon"){
				Instantiate(ball, ballSpawn.transform.position, ballSpawn.transform.rotation);
			}
		}
	}
}

Up…

Check to make sure the raycast isn’t hitting anything else in its path. Also, if you have multiple cameras (such as one for the GUI, another for main, etc.) make certain you are working from the intended camera.