Ich würde deine Variablen in Listen umwandeln mit der Überlegung, dass jedes Element für einen Touch steht:
private List <Transform> hitObjects;
private List <Ray> rays;
private List <bool> hitPlayers;
So kannst du alle Touch Events einzeln behandeln. Ich nehme beispielhaft einen Teil deines Codes und zeige kurz, wie ich das handhaben würde.
hitPlayers.Clear ();
hitObjects.Clear ();
rays.Clear ();
for (int i = 0; i<Input.touchCount; ++i)
{
RaycastHit hit;
Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(i).position);
Transform hitObject = null;
if (Physics.Raycast (ray, out hit, 100))
{
hitPlayer = true;
hitObject = hit.transform;
}
hitPlayers.Add (hitPlayer);
hitObjects.Add (hitObject);
rays.Add (ray);