如果超过100 px LibGDX,如何仅检测滑动

时间:2014-07-01 18:37:41

标签: android libgdx

在我的游戏屏幕上,我希望仅在超过100px的情况下才能检测到滑动,这是因为用户在游戏屏幕上轻敲了很多并且它倾向于检测到滑动将屏幕更改回标题。如何仅在长度超过100px时才能进行滑动检测?

2 个答案:

答案 0 :(得分:1)

有两种方法可以实现这一目标。

第一个是保存触摸的起点并测量触摸事件结束时的距离,就像Paul提到的那样。

如果你使用libgdx的GestureDetector,第二个是扩大抽头方块大小。它默认为40px,这意味着如果你的手指向任何一侧移动超过20px,它不再是一个点击事件而是一个泛事件。我建议使用GestureListener / Detector,因为它会为您提供开箱即用的基本移动手势,而不是重新编码。

注意:按像素确定距离很容易出错,因为移动设备之间的像素密度会有所不同,特别是如果您为Android编码!一台设备上的100px可能只是另一台设备上距离的一半。这样做时要考虑像素密度,或者改为相对测量,例如屏幕尺寸的1/3!

答案 1 :(得分:0)

保持上下触摸位置。

private Vector2 downPos = new Vector2(), upPos = new Vector2();
private Vector3 tmp = new Vector3();
public void touchDown(float x, float y.....) {
    tmp.set(x, y, 0);
    camera.unproject(tmp);
    downPos.set(tmp.x, tmp.y);
}

public void touchUp(float x, float y.....) {
    tmp.set(x, y, 0);
    camera.unproject(tmp);
    upPos.set(tmp.x, tmp.y);

    float distance = downPos.dst(upPos); // the distance between thoose vectors
    if (distance > 100) {
        // there was a swipe of a distance longer than 100 pixels.
    }
}

如果您不想仅在修饰时执行此操作,请将代码放入touchdrag方法中。