- 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