No estoy seguro, pero me parece que cuando haces:
public int touches = Input.touchCount;
almacenas el valor de "Input.touchCount" que tiene en ese preciso momento (casi seguro 0) en a variable "touches" y luego ya no la vuelves a actualizar en ningún momento.
Yo probaría a cambiar la linea :
if (touches > 0)
por
if (Input.touchCount > 0)
Y colocar Logs para ver si se mete en cada uno de los IFs
Prueba y nos cuentas que tal.
public int touches = Input.touchCount;
almacenas el valor de "Input.touchCount" que tiene en ese preciso momento (casi seguro 0) en a variable "touches" y luego ya no la vuelves a actualizar en ningún momento.
Yo probaría a cambiar la linea :
if (touches > 0)
por
if (Input.touchCount > 0)
Y colocar Logs para ver si se mete en cada uno de los IFs
Prueba y nos cuentas que tal.