This is the code in the script “OnTouch”:
// Update is called once per frame
void Update () {
foreach(Touch t in Input.touches)
{
Debug.Log ("We have touches!");
Ray ray = Camera.main.ScreenPointToRay(t.position);
RaycastHit hit;
Debug.Log (Physics.Raycast(ray, out hit));
if(Physics.Raycast(ray, out hit))
{
Debug.Log ("We have a hit!");
switch(t.phase)
{
case TouchPhase.Began:
hit.collider.SendMessage("OnTouchDown", null, SendMessageOptions.DontRequireReceiver);
//hit.collider.SendMessage("OnMouseDown", null, SendMessageOptions.DontRequireReceiver);
//hit.collider.SendMessage("OnTouchOver", null, SendMessageOptions.DontRequireReceiver);
//hit.collider.SendMessage("OnMouseOver", null, SendMessageOptions.DontRequireReceiver);
break;
case TouchPhase.Moved:
case TouchPhase.Stationary:
//hit.collider.SendMessage("OnTouchOver", null, SendMessageOptions.DontRequireReceiver);
//hit.collider.SendMessage("OnMouseOver", null, SendMessageOptions.DontRequireReceiver);
break;
default:
//hit.collider.SendMessage("OnTouchUp", null, SendMessageOptions.DontRequireReceiver);
//hit.collider.SendMessage("OnMouseUp", null, SendMessageOptions.DontRequireReceiver);
break;
}
}
}
}
It is attached to the parent canvas of my objects:
But the Physics.Raycast always return false so I can’t detect anything.
What is wrong here?
Also, isn’t there an easier way to detect touches? Like adding a “Touch Component” or a “Touch Script” to a GameObject?
Best regards