Unity 3D Game Engine – Android – Swipe – Screen – Detection – JS
How to detect swipe gesture on Android using JavaScript.
With this script you can obtain an effect as fruit ninja.
Hierarchy, create
– GUI Text Distance
– GUI Text Is Swipe
– GUI Text Start Position
– GUI Text Start Time
– GUI Text Swipe Time
– Main Camera attach the ‘SwipeDetector.js’
SwipeDetector.js
#pragma strict // Swipe Detector // Attach this script to Main Camera // Author: Andrea Tonin // Web Site: www.blog.lucedigitale.com // Hierarchy DRAG E DROP over var GUI Text in Inspector var StartPosText : GUIText; // to display start position of finger var StartTimeText : GUIText; // to display start time of finger var SwipeTime : GUIText; // to display swipe time var SwipeDistance : GUIText; // to display swipe distance var SwipeDetect : GUIText; // to display if swipe is detect var startTime: float; // start time at first finger touch var startPos: Vector2; // start position at first finger touch var couldBeSwipe: boolean; // NOTA BENE: Inspector> lasciarlo uncheck, il valore verrà stabilito dallo script var minSwipeDist: float; // da 200 in su, distanza minima che il dito deve percorrere per essere considerato uno swipe var maxSwipeTime: float; // da 0.5 in su, tempo massimo (in secondi) che il dito può utilizzare per percorrere la distanza minima minSwipeDist function Update() { if (Input.touchCount > 0) { var touch = Input.GetTouch(0); // scrive Input.GetTouch(0).phase == TouchPhase.Began switch (touch.phase) { case TouchPhase.Began: // quando il tocco inizia rilevo la posizione e il tempo ####################### couldBeSwipe = false; startPos = touch.position; startTime = Time.time; // Debug Text inizio ######################################### // scrive la posizione in pixel X e Y del tocco es: (23.0,24.9) StartPosText.text = "Start position: " + startPos; // scrive i secondi trascorsi dall'avvio dell'app es: 61.71594 StartTimeText.text = "Start Time: " + startTime; // Debug Text fine ########################################### break; case TouchPhase.Moved: // quando il dito sta strisciando non c'è swipe ################################## couldBeSwipe = false; break; case TouchPhase.Stationary: // se il dito è stazionario non c'è swipe ######################################## couldBeSwipe = false; break; case TouchPhase.Ended: // quando sollevo il dito effettuo il controllo finale ########################### // potrebbe essere uno swipe couldBeSwipe = true; // calcolo la durata dello swipe var swipeTime = Time.time - startTime; // calcolo la distanza dello swipe var swipeDist = (touch.position - startPos).magnitude; // Debug Text inizio ######################################### // scrive il tempo in secondi dello swipe es: 1.298765 SwipeTime.text = "Swipe Time: " + swipeTime; // scrive la distanza dello swipe in pixel es: 165.127 SwipeDistance.text = "Swipe Distance: " + swipeDist; // Debug Text fine ########################################### // se è VERO AND rientra nel tempo massimo AND ricopre la distanza minima if (couldBeSwipe && swipeTime < maxSwipeTime && swipeDist > minSwipeDist) { // è uno swipe! YEHHHHHH! // qualcosa da fare se è uno swipe SwipeDetect.text = "Swipe!!!"; // resetto la variabile couldBeSwipe = false; // resetto la scritta a video SwipeDetect.text = "Waiting next Swipe"; } break; } } }
Hierarchy> Main Camera> Inspector> SwipeDetector.js assign:
– GUI Text Distance -> var SwipeDistance
– GUI Text Is Swipe -> var SwipeDetect
– GUI Text Start Position -> var StartPosText
– GUI Text Start Time -> var StartTimeText
– GUI Text Swipe Time -> var SwipeTime
– Start Time -> 0 (si arrangia lo script a gestirlo)
– Start Pos XY -> 0 0 (si arrangia lo script a gestirlo)
– Could Be Swipe -> uncheck (si arrangia lo script a gestirlo)
– Min Swipe Dist -> 200 (la minima distanza in pixel perchè il gesto sia uno swipe)
– Max Swipe Time -> 0.5 (il tempo massimo che può impiegare il dito a percorrere Min Swipe Dist)