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

时间:2017-05-07 09:55:28

标签: java android libgdx

所以在我的游戏中我想拥有它,所以当有人按住屏幕时,我的角色跳得越高。但是我不知道如何检查某人是否按住了屏幕。

我目前的尝试是这样做: 并在更新方法

中的每一帧运行它
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);
        }
    }
}

1 个答案:

答案 0 :(得分:1)

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

  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()));
    
    1. longPress仅在屏幕保持X时间后被调用一次。所以最好创建自己的逻辑并检查用户触摸屏幕的时间。

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