Оказывается мой код был таки работающим.Три дня искал баг но он оказался в другом месте.
Не претендую на правильность решения, у меня это работает так.
void OnGUI () {//Код проверялся в FixedUpdate, Update, OnGUI.OnGUI чтобы можно было проверить работу на устройстве, я не нашел как включить в плеере юнити эмуляцию тачей
if (Input.touchCount > 0) {
for(int i = 0; i < Input.touchCount; i++){
//if (Input.touches [i].phase == TouchPhase.Stationary) {//Здесь можно выбрать фазу
GUI.Label (new Rect(10,50,150,100), "Touch.pos.x=" + Input.touches [i].position.x.ToString());
GUI.Label (new Rect(150,50,150,100), "Touch.pos.y=" + ((float)Screen.height - Input.touches [i].position.y).ToString());//Ось Y перевернута "вверх ногами", решение (float)Screen.height - Input.touches [i].position.y
Vector2 rayPos = new Vector2 (Camera.main.ScreenToWorldPoint (new Vector3(Input.touches [i].position.x, Input.touches [i].position.y, 0f)).x,Camera.main.ScreenToWorldPoint (new Vector3(Input.touches [i].position.x, Input.touches [i].position.y, 0f)).y);
RaycastHit2D hit = Physics2D.Raycast (rayPos, Vector2.zero, 0f);
if (hit) {
//if(hit.transform.tag == "tag"){//Тег объекта по которому совершен тап
transform.position = new Vector3(transform.position.x,transform.position.y+0.1f,transform.position.z);
Debug.Log (hit.collider.name);
GUI.Label (new Rect(10,30,100,100),hit.collider.name);
//}
}
//}
}
}
}