如何检测Libgdx中的滑动方向?

时间:2016-04-25 08:14:58

标签: java libgdx

我知道如何检测libgdx中的滑动,但是当我向某个方向滑动时遇到问题,顺便说一句,我使用的是GestureListener。

        if(velocityX > 0) {
            System.out.println("right");        
        }else if(velocityY > 0 && velocityX > 0){
            System.out.println("down");
        }else if(velocityY < 0){
            System.out.println("up");
        }

基本上发生的事情是,当我向上或向下滑动时,它有时会打印输出&#34;右边&#34;。我想要发生的是检测指针指向哪个方向,因为如果你使用velocityX和velocityY然后你沿对角线滑动它会检测到向上和向右或向下和向右的两个方向。在我的情况下,如果用户沿对角线方向滑动,则应仅将其检测为向上或向下手势,并且不应包括向左和向右滑动。

更新

 if(Math.abs(velocityY) > Math.abs(velocityX)){
          if(velocityY > 0)
              System.out.println("down");
          else if(velocityY < 0)
              System.out.println("up");
      }else if(Math.abs(velocityX) > Math.abs(velocityY))
          if(velocityX > 0)
              System.out.println("right");

它基本上打印出大于另一个方向的方向

1 个答案:

答案 0 :(得分:5)

你要做的第一件事就是决定动作是“更左右”还是“更多上下”:

if (Math.abs(velocityX) > Math.abs(velocityY)) {
  // More left-right.
} else {
  // More up-down.
}

然后,你选择它中的哪个“更多”方向,例如在条件中的“更多左右”块中:

if (velocityX >= 0) {
  System.out.println("Right");
} else {
  System.out.println("Left");
}

同样适用于velocityY

请注意,这基本上将方向空间划分为4个象限,分为vy = vxvy = -vx行。

enter image description here