Touch.deltaPosition works differently with two fingers?


Below is a sample of some code I have in OnGUI() The values delta and delta2 are Vector2’s that are members of the script. This code should displays the delta of both fingers. The weird thing is when I run this, the deltaPos for the first finger to touch always updates just fine, however the second finger mostly reports 0. As I drag both fingers I see the value for finger1 change a lot more frequently than finger two. I also had another code snippet in update that would get deltapos of both fingers and then calc their dot product. The dot product pretty much always comes out to zero. Can anyone explain this to me, I assume I am either misusing the API or there is something about the hardware I dont understand. Thanks - Richard

    if(Input.touchCount > 1 && Input.GetTouch(1).phase == TouchPhase.Began)
		delta = Vector2(0,0);
	if(Input.touchCount > 1 && Input.GetTouch(1).phase == TouchPhase.Moved)
		delta = Input.GetTouch(1).deltaPosition;
	GUI.Label(Rect(200, 200, 100, 100), delta.magnitude.ToString());
	if(Input.touchCount > 1 && Input.GetTouch(0).phase == TouchPhase.Began)
		delta2 = Vector2(0,0);
	if(Input.touchCount > 1 && Input.GetTouch(0).phase == TouchPhase.Moved)
		delta2 = Input.GetTouch(0).deltaPosition;
	GUI.Label(Rect(290, 200, 100, 100), delta2.magnitude.ToString());

As far as i know the order of the touch events is not always the same. You should check the unique fingerId which actually identifies a certain Touch.

If that doesn’t help, your device might not fully support multitouch.