Quantcast
Channel: Questions in topic: "ios"
Viewing all articles
Browse latest Browse all 4709

Swipe Control Issue.. Need help

$
0
0
I'm having some troubles with creating swipe controls for a game. I'm trying to recreate the controls of the game Subway Surfers, where a swipe is detected during the Touch.Moved phase not the Touch.End phase. Right now it works most of the time but once in a while (to often) a vertical swipe will be processed as a horizontal one. I've posed the code below, thanks in advance for any help. int swipeIndex = -1; //index of first detected swipe to prevent multiple swipes Vector2 startPos = Vector.zero; //starting position of touch //minSwipeDist is the distance in inches the player must swipe for a correct swipe for (int i = 0; i < Input.touchCount; i++) { Touch touch = Input.touches[i]; switch (touch.phase) { case TouchPhase.Began: if (swipeIndex == -1) { swipeIndex = i; startPos = touch.position; } break; case TouchPhase.Moved: if(i != swipeIndex) break; Vector2 direction = touch.position - startPos; //vertical swipe if (Mathf.Abs(direction.x) < Mathf.Abs(direction.y)) { //swipe up if ((touch.position.y - startPos.y) > minSwipeDist) { //Process Up swipe swipeIndex = -1; } //swipe down else if ((touch.position.y - startPos.y) < -minSwipeDist) { //Process down swipe swipeIndex = -1; } } //horizontal swipe else { //swipe left if ((touch.position.x - startPos.x) < -minSwipeDist) { //process left swipe swipeIndex = -1; } //swipe right else if ((touch.position.x - startPos.x) > minSwipeDist) { //process right swipe swipeIndex = -1; } } break; } }

Viewing all articles
Browse latest Browse all 4709

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>