- Home /
how to get gesture
Hi
how to get user touch input as gesture, suppose there is a arrow and user want to get a gesture of that arrow from a touch so how could we get that gesture from a swipe???
suppose user make a right arrow or other directional arrow on screen by gesture touch then how we get which arrow or fig user draw on screen
thanks in advance
there are a number of gesture recognisers for sale for a few dollars on the asset store.
in unity click apple9 for the asset store
you'd have to find the one that is right for you. it is thousands of lines of code for a big complex gesture recognizer, so it is impossible to do it from scratch.
Great diagrams BTW !
Answer by efge · Sep 14, 2012 at 02:13 PM
You could start with the FingerManager script from the wiki and then detect the gesture by using Touch.position and Touch.deltaPosition.
Answer by RickHurd · Jan 24, 2014 at 03:20 AM
This might be a good place to start, its what I'm using as reference.
/* this variable is used to make use of the swipe. Once a swipe is detected
* a function called Swipe(swipeType : Vector2) is called
*/
var controller : PlayerController;
// variables:
private var fingerStartTime : float = 0.0;
private var fingerStartPos : Vector2 = Vector2.zero;
private var isSwipe : boolean = false;
private var minSwipeDist : float = 50.0;
private var maxSwipeTime : float = 0.5;
// main function:
function Update()
{
if (Input.touchCount > 0)
{
for (touch : Touch in Input.touches)
{
switch (touch.phase)
{
case TouchPhase.Began :
/* this is a new touch */
isSwipe = true;
fingerStartTime = Time.time;
fingerStartPos = touch.position;
break;
case TouchPhase.Canceled :
/* The touch is being canceled */
isSwipe = false;
break;
case TouchPhase.Ended :
var gestureTime : float = Time.time - fingerStartTime;
var gestureDist : float = (touch.position - fingerStartPos).magnitude
if (isSwipe && gestureTime < maxSwipeTime && gestureDist > minSwipeDist)
{
var direction : Vector2 = touch.position - fingerStartPos;
var swipeType : Vector2 = Vector2.zero;
if (Mathf.Abs(direction.x) > Mathf.Abs(direction.y)
{
// the swipe is horizontal:
swipeType = Vector2.right * Mathf.Sign(direction.x);
}
else
{
// the swipe is vertical:
swipeType = Vector2.up * Mathf.Sign(direction.y);
}
controller.Swipe(swipeType);
}
break;
}
}
}
}
}
Your answer
Follow this Question
Related Questions
Detecting an object under a swipe gesture. 0 Answers
Touch input reporting 0 delta for first several Updates on iOS, 2 Answers
How to tie Unity app to Windows event 1 Answer
Move with finger ? 0 Answers
Help with Uniflow Gallery swipe 0 Answers