Basically I want to have two objects that you can rotate with touch. When rotating one object it works fine, when I have two fingers on the screen to rotate two objects the rotation now stutters for both. If there is something really simple I am missing or even maybe my phone is faulty I am not sure. If someone can help me test this or provide a better solution it would be greatly appreciated.
public float rotSpeed;
public Transform leftCube;
public Transform rightCube;
void Update()
{
//GET TOUCH COORDINATES
if(Input.touchCount > 0)
{
Touch touch1 = Input.GetTouch(0);
leftCube.Rotate(Vector3.up, -touch1.deltaPosition.x * rotSpeed, Space.World);
if(Input.touchCount == 2)
{
Touch touch2 = Input.GetTouch(1);
rightCube.Rotate(Vector3.up, -touch2.deltaPosition.x * rotSpeed, Space.World);
}
}
}
What you’re missing is that Input.GetTouch(n) is not stable. Sometimes they will be switched. You can try using Unity - Scripting API: Touch.fingerId to resolve this. But that too may get mixed up if the fingers get close to each other.
If finer ID gets mixed up too then how can you make a stable touch controls, seems very confusing. Below is my full code, what I am trying to achieve is if a finger is on the left side of the screen rotate the left object, if it’s on the right rotate the right object seems pretty straight forward. I will have a look at touch fingerId it might help solve the issue thanks for the reply 
public float rotSpeed;
public Transform leftCube;
public Transform rightCube;
void Update()
{
//GET TOUCH COORDINATES
if(Input.touchCount > 0)
{
Touch touch1 = Input.GetTouch(0);
if(touch1.position.x < Screen.width/2)
{
leftCube.Rotate(Vector3.up, -touch1.deltaPosition.x * rotSpeed, Space.World);
}
else
{
rightCube.Rotate(Vector3.up, -touch1.deltaPosition.x * rotSpeed, Space.World);
}
if(Input.touchCount == 2)
{
Touch touch2 = Input.GetTouch(1);
if(touch2.position.x < Screen.width/2)
{
leftCube.Rotate(Vector3.up, -touch2.deltaPosition.x * rotSpeed, Space.World);
}
else
{
rightCube.Rotate(Vector3.up, -touch2.deltaPosition.x * rotSpeed, Space.World);
}
}
}
}