- Home /
Problem with multi touch[solved]
I have decided to open a new question as I believe the problem is a bit changed and therefore i will explain it better in a new topic.
Problem: When i have multiple touches my object translates slower !
Setup: 3 GUITextures, only 2 will be used at the same time. One GUITexture for translating character forward, 2 GUITextures for rotating the caracter left / right.
Scenario 1: Touch and keep it on move forward button, then add another touch on the screen but not on any other buttons! My character now moves slower.Release second touch, back to original speed.
Scenario 2: Touch and keep on move forward button, touch and keep on rotate left button, again my character moves slower-> thus giving the illusion he is only rotating now and not translating.
LE: I make my variables false at the beginning of the update function, forgot to mention that!
Code for multiple input:
 // Loop through all the touches on screen if there are any
         if(Input.touchCount > 0){
             for(int i=0;i<Input.touchCount;i++){
 
                 Touch t = Input.GetTouch(i);
                 // Check to see if touch is on move_forward button
                 if(move_forward.HitTest(t.position) && t.phase != TouchPhase.Ended && t.phase != TouchPhase.Canceled){
                     doMove=true;
                 }
                 // Check to see if touch is on rotate left button
                 if(turn_left.HitTest(t.position) && t.phase != TouchPhase.Ended && t.phase != TouchPhase.Canceled){
                     doTurnLeft=true;
                 }
                 // Check to see if touch is on rotate right button
                 if(turn_right.HitTest(t.position) && t.phase != TouchPhase.Ended && t.phase != TouchPhase.Canceled){
                     doTurnRight=true;
                 }
             }
         }
Code for handling the touches:
 if (doMove == true && (doTurnLeft == true || doTurnRight == true) )  {
             // Translate to new position
             Vector3 position = transform.position;
             position+=transform.forward*move_speed;
             transform.position=position;
 
             // Rotate
             if(doTurnRight == true)
                 transform.Rotate(transform.up,rotation_speed);
             else
                 transform.Rotate(transform.up,rotation_speed*-1.0f);
 
             // Play walk animation
             animation.Play("walk");
         }
         if (doMove == true && doTurnLeft == false && doTurnRight == false) {
             // Translate to new position
             Vector3 position = transform.position;
             position+=transform.forward*move_speed;
             transform.position=position;;
         
             // Play walk animation
             animation.Play ("walk");
         }
         if (doMove == false && (doTurnLeft == true || doTurnRight == true) ) {
             // Rotate
             if(doTurnRight == true)
                 transform.Rotate(Vector3.up*rotation_speed);
             else
                 transform.Rotate(Vector3.up*rotation_speed*-1.0f);
 
             // Play idle animation
             animation.Play ("idle");
         }
         if (doMove == false && doTurnLeft == false && doTurnRight == false) {
             //Play idle animation
             animation.Play("idle");
         }
You're supposed to post your own answer and mark is as correct if you found the solution yourself. Welcome to Unity Answers!
Your answer
 
 
             Follow this Question
Related Questions
Pinch zoom 1 Answer
Android 2D multitouch joystick + buttons 0 Answers
MultiTouch Help(C#) 1 Answer
Multiple Cars not working 1 Answer
How to stop second finger from manipulating position of gui joystick 1 Answer
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                