- Home /
Question by
Rhylvin2015 · Jul 27, 2015 at 06:38 AM ·
touchswipeinput.touchdouble-tap
how to detect a mobile double tap, and a long press. PS. I already have swipe detected.
hello, i have a 2d game that I need it to detect a mobile double tap and a long press. and again I already have Swipes figured out. the problem is I don't know how to detect a double tap and a long press tap. heres my code for the swipe detection. P.S. the GUI acts like a debug that tells me that my swipe is working perfectly.
public void DetectSwipe ()
{
if (Input.touches.Length > 0) {
Touch t = Input.GetTouch(0);
if (t.phase == TouchPhase.Began) {
firstPressPos = new Vector2(t.position.x, t.position.y);
}
if (t.phase == TouchPhase.Ended) {
secondPressPos = new Vector2(t.position.x, t.position.y);
currentSwipe = new Vector3(secondPressPos.x - firstPressPos.x, secondPressPos.y - firstPressPos.y);
// Make sure it was a legit swipe, not a tap
if (currentSwipe.magnitude < minSwipeLength) {
swipeDirection = Swipe.None;
return;
}
currentSwipe.Normalize();
// Swipe up
if (currentSwipe.y > 0 && currentSwipe.x > -0.5f && currentSwipe.x < 0.5f) {
swipeDirection = Swipe.Up;
Debug.Log ("SwipeUp");
changeDirection = 1;
// Swipe down
} else if (currentSwipe.y < 0 && currentSwipe.x > -0.5f && currentSwipe.x < 0.5f) {
swipeDirection = Swipe.Down;
Debug.Log ("SwipDown");
changeDirection = 2;
// Swipe left
} else if (currentSwipe.x < 0 && currentSwipe.y > -0.5f && currentSwipe.y < 0.5f) {
swipeDirection = Swipe.Left;
Debug.Log ("SwipeLeft");
changeDirection= 3;
// Swipe right
} else if (currentSwipe.x > 0 && currentSwipe.y > -0.5f && currentSwipe.y < 0.5f) {
swipeDirection = Swipe.Right;
Debug.Log ("SwipeRight");
changeDirection = 4;
}
}
} else {
if (Input.GetMouseButtonDown(0)) {
firstClickPos = new Vector2(Input.mousePosition.x, Input.mousePosition.y);
} else {
swipeDirection = Swipe.None;
//Debug.Log ("None");
}
if (Input.GetMouseButtonUp (0)){
secondClickPos = new Vector2(Input.mousePosition.x, Input.mousePosition.y);
currentSwipe = new Vector3(secondClickPos.x - firstClickPos.x, secondClickPos.y - firstClickPos.y);
// Make sure it was a legit swipe, not a tap
if (currentSwipe.magnitude < minSwipeLength) {
swipeDirection = Swipe.None;
return;
}
currentSwipe.Normalize();
//Swipe directional check
// Swipe up
if (currentSwipe.y > 0 && currentSwipe.x > -0.5f && currentSwipe.x < 0.5f) {
swipeDirection = Swipe.Up;
// Swipe down
Debug.Log ("SwipeUp");
changeDirection = 1;
} else if (currentSwipe.y < 0 && currentSwipe.x > -0.5f && currentSwipe.x < 0.5f) {
swipeDirection = Swipe.Down;
// Swipe left
Debug.Log ("SwipDown");
changeDirection = 2;
} else if (currentSwipe.x < 0 && currentSwipe.y > -0.5f && currentSwipe.y < 0.5f) {
swipeDirection = Swipe.Left;
Debug.Log ("SwipeLeft");
changeDirection= 3;
// Swipe right
} else if (currentSwipe.x > 0 && currentSwipe.y > -0.5f && currentSwipe.y < 0.5f) {
swipeDirection = Swipe.Right;
Debug.Log ("SwipeRight");
changeDirection = 4;
}
}
}
}
void OnGUI()
{
if(changeDirection== 1)
{
GUI.Box(new Rect(400,10,100,90), "Up");
}
if(changeDirection == 2)
{
GUI.Box(new Rect(400,10,100,90), "Down");
}
if(changeDirection == 3)
{
GUI.Box(new Rect(400,10,100,90), "Left");
}
if(changeDirection == 4)
{
GUI.Box(new Rect(400,10,100,90), "Right");
}
}
}
Comment
Your answer
Follow this Question
Related Questions
How to touch anywhere on screen? 0 Answers
Swipe control for circle (Can do swipe left/right) 2 Answers
Touch input in browsers 0 Answers
Reproducing the "spin" effect of Flick Kick Football 1 Answer
How add click area? 1 Answer