- Home /
ANDROID Realtime multitouch detection
Hello,
I'm building a touch joystick for android, researched in various places on how to build it properly, including here in unity answers, includes some of the links below and their problems:
Android multitouch with wrong order of code execution.
http://answers.unity3d.com/questions/318849/multi-touch-not-working-whats-wrong-with-this-code.html
Multitouch without loop iteration of the contact points
http://answers.unity3d.com/questions/242036/multitouch-on-android.html http://answers.unity3d.com/questions/602336/multitouch-gui-android.html
many touchs
http://answers.unity3d.com/questions/543364/multi-touch-not-working-on-some-devices.html
Just a raycast
http://answers.unity3d.com/questions/23316/multitouch-problem-in-unity-iphone.html
Many of the problems are related to this kind of topic ...
My problem:
1 If you have a point of contact and put another, the second does not work unless I remove the first.
2 If I have a point of contact and the second places at another location, and then slide the second onto the area of contact it works normally as if nothing was wrong.
summarizes:
Second point of contact only works if SLIDING on the desired area of contact.
 I tried to use the unity`s mobile assets package prefabs, their just gimme the same problem, thats include:
Dual TouchPads
Dual Joysticks
Single Joystick
TapControlSetup
Code fragment:
if(Input.touchCount > 0){ 
 Debug.Log (Input.touches.Length.ToString());
         foreach(Touch touch in Input.touches){
             Ray ray = mainCamera.ScreenPointToRay(touch.position);
             
             if(Physics.Raycast(ray,out hit,touchInputMask)){
                 GameObject recipient = hit.transform.gameObject;
                 Button button        = recipient.GetComponent<Button>();
                 
                 if(button!=null){
                     //PHASE CHECK
                     if(touch.phase == TouchPhase.Began){
                         button.OnTouchDown();
                     }
                     if(touch.phase == TouchPhase.Ended){
                         button.OnTouchUp();
                     }
                     if(touch.phase == TouchPhase.Stationary || touch.phase == TouchPhase.Moved){
                         button.OnTouchStay();
                     }
                     if(touch.phase == TouchPhase.Canceled){
                         button.OnTouchExit();
                     }
                 }//END BUTTON IF
             }//END RAYCAST
         }//END FOREACH
     }//END IF
Answer by Ophien · Jul 08, 2014 at 12:33 AM
Problem solved...
Android do not detect simultaneous touchs at the same or almost same Y position on the screen, or is a unity interface integration problem.
Out of curiosity, what is your device? Sounds defective. Xperia Z will do 10 touches in any proxmimity. I know this as I've tried AngryBots on a fullHD screen. Dem joysticks is tiny.
Xperia SP, i`ve solved this problem just reajusting the UI elements positions. I don`t think it is a device problem because of a lot of games that uses mul$$anonymous$$ch freely.
Display resolution: 1280x720
Your answer
 
 
             Follow this Question
Related Questions
Two player touch screen 1 Answer
2D multi touch 1 Answer
Android: After the third touch all touches get cancelled 1 Answer
Camera.main.WorldToScreenPoint(touch.position). Help !!! 1 Answer
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                