因此,在我的游戏中,我想拥有它,以便有人在屏幕上按住的时间越长,我的角色跳得越高。但是我不知道如何检查是否有人按住屏幕。

我当前的尝试是这样做:
并在更新方法的每一帧中运行

public void handleInput(float dt) {
    if (Gdx.input.isTouched()) {
        if (sheep.getPosition().y != sheep.maxHeight && sheep.getPosition().y == sheep.minHeight) {
                sheep.jump(1);
        }

        if (sheep.getPosition().y == sheep.maxHeight && sheep.getPosition().y != sheep.minHeight) {
                sheep.jump(-1);
        }
    }
}

最佳答案

我建议两种检测长时间触摸的方法,根据您的要求选择一种。


您可以使用longPress界面的GestureListener方法检测是否有长按。默认情况下,longPress持续时间为1.1秒,这意味着用户必须触摸等于此持续时间的屏幕才能触发longPress事件。

@Override
public boolean longPress(float x, float y) {

    Gdx.app.log("MyGestureListener","LONG PRESSED");
    return false;
}


将您的实现设置为InputProcessor。

Gdx.input.setInputProcessor(new GestureDetector(new MyGestureListener()));






按住屏幕X次后,longPress仅被调用一次。因此最好创建自己的逻辑并检查用户触摸屏幕多长时间。

if (Gdx.input.isTouched()) {
   //Finger touching the screen
   counter++;
}


touchUp接口的InputListener上,根据计数器的值进行跳转,并将计数器的值重置为零。

@Override
public boolean touchUp(int screenX, int screenY, int pointer, int button) {
   //make jump according to value of counter
   counter=0;    //reset counter value
   return false;
}


将您的实现设置为InputProcessor。

Gdx.input.setInputProcessor(new MyInputListener());

10-07 19:28