Java 如何在libgdx上记录更长的触球以获得更高的跳跃

Java 如何在libgdx上记录更长的触球以获得更高的跳跃,java,android,libgdx,Java,Android,Libgdx,所以在我的游戏中,我希望有人在屏幕上按住的时间越长,我的角色跳得就越高。然而,我不知道如何检查是否有人按住屏幕 if (Gdx.input.isTouched()) { //Finger touching the screen counter++; } 我目前的尝试是: 并在更新方法中的每一帧运行它 public void handleInput(float dt) { if (Gdx.input.isTouched()) { if (sheep.getPo

所以在我的游戏中,我希望有人在屏幕上按住的时间越长,我的角色跳得就越高。然而,我不知道如何检查是否有人按住屏幕

if (Gdx.input.isTouched()) {
   //Finger touching the screen
   counter++;
}
我目前的尝试是: 并在更新方法中的每一帧运行它

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);
        }
    }
}

我建议使用两种方法来检测长距离触摸,根据您的要求选择一种

  • 您可以使用
    gestureelistener
    界面的
    longPress
    方法来检测是否存在长按。默认情况下,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()));
    
    Gdx.input.setInputProcessor(new MyInputListener());
    

  • 按住屏幕X次后,longPress只会被调用一次。所以最好创建自己的逻辑并检查用户触摸屏幕的时间

    if (Gdx.input.isTouched()) {
       //Finger touching the screen
       counter++;
    }
    
    InputListener
    接口的
    toucup
    上,根据计数器的值进行跳转,并将计数器的值重置为零

    @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 GestureDetector(new MyGestureListener()));
    
    Gdx.input.setInputProcessor(new MyInputListener());