- 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