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

标签 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");
        }

基本上,当我向上或向下滑动时,它有时会打印出“向右”。我想要发生的是检测指针指向哪个方向,因为如果你使用 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");

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

最佳答案

您可以做的第一件事是确定运动是“更左右”还是“更上下”:

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

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

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

对于 velocityY 也是如此。

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

enter image description here

关于java - 如何检测 Libgdx 中的滑动方向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36835183/

相关文章:

java - LibGDX - 使用 android 库

java - LibGDX - 调整大小后将粒子渲染在错误的位置

java - 为什么这会返回 true true 而不会堆栈溢出?

java - 如何为启用 HA 的集群配置 SparkContext

java - 如何使我的 ListView 行看起来像 Twitter 应用程序 [屏幕截图]?

java - 无法将数据从 firebase 添加到字符串数组

java - libgdx 游戏崩溃 : "A L lib: (EE) alc_cleanup: 1 device not closed" on Desktop and "Fatal signal 11 (SIGSEGV)" on android

java - 获取鼠标位置的更快方法

android - LibGDX 9 补丁图像不适用于 TextButtonStyle 和 TextureAtlas

java - LIBGDX 在一个屏幕上制作 5 个不同的按钮