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)