void HandleInput() { if (Input.touchCount == 1) { Touch touch = Input.GetTouch(0); touchPosition = (Vector2)Camera.main.ScreenToWorldPoint( touch.position ); RaycastHit2D raycastHit = Physics2D.Raycast( touchPosition, Vector3.forward, Mathf.Infinity ); if (elementClicked != null) { switch (touch.phase) { case TouchPhase.Moved: elementClicked.TouchDrag(); break; case TouchPhase.Ended: elementClicked.TouchUp(); elementClicked = null; break; } } else if (touch.phase == TouchPhase.Began) { if (raycastHit) { elementClicked = raycastHit.collider .GetComponent <ITouchable>(); } if (elementClicked != null) { elementClicked.TouchDown(); } } } else { ClearElementClicked(); } }