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)