java - libgdx 多个平移事件

标签 java android libgdx

在我的游戏中,用户应该用一根手指在屏幕左侧移动玩家,并且能够用右手手指射击。问题是,当射击时,玩家无法再移动。我发现了一些相关的问题,但没有一个对我有帮助。我尝试使用 2 个不同的 GestureListener 类。其中一个检查屏幕右侧是否被触摸,另一个检查左侧,仍然不起作用。

这是第一个类的pan方法

    public boolean pan(float x, float y, float deltaX, float deltaY) {
        lastTouch = new Vector2(x, y).sub(deltaX, deltaY);
        Vector2 newTouch = new Vector2(x, y);

        Vector2 delta = newTouch.cpy().sub(lastTouch);
        if(lastTouch.x < Gdx.graphics.getWidth()/2 && newTouch.x < Gdx.graphics.getWidth()/2) {
            stage.getPlayer().move(new Vector2(delta.x, -delta.y));
        }
        lastTouch = newTouch;
        return true;
    }

这是第二类的方法

    public boolean pan(float x, float y, float deltaX, float deltaY) {
        lastTouch = new Vector2(x, y).sub(deltaX, deltaY);
        Vector2 newTouch = new Vector2(x, y);

        Vector2 delta = newTouch.cpy().sub(lastTouch);
        if(lastTouch.x > Gdx.graphics.getWidth()/2 && newTouch.x > Gdx.graphics.getWidth()/2){
            if(shoot) {
                bullets.add(new Bullet(WorldUtils.createBullet(stage.getWorld(), stage.getPlayer().getBody().getPosition().x+70, stage.getPlayer().getBody().getPosition().y, new Vector2(delta.x, -delta.y)), new Vector2(delta.x, -delta.y)));
                shoot = false;
            }
            stage.getPlayer().turn(new Vector2(delta.x, -delta.y));
        }
        lastTouch = newTouch;
        return true;
    }

谢谢

最佳答案

LibGDX 中的监听器倾向于使用 boolean 返回值来说明输入是否已完成处理。当您返回 true 时,监听器将停止处理进一步的操作。

The GestureListener can signal whether it consumed the event or wants it to be passed on to the next InputProcessor by returning either true or false respectively from its methods.

尝试将返回方法更改为 false,看看是否可以解决问题,否则尝试将其转换为使用具有用于手指计数的参数指针的 touchDown 和 touchUp 方法

关于java - libgdx 多个平移事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44799158/

相关文章:

JavaFX TableView 如果使用 HashMap ,如何向特定单元格填充颜色

java - 在java中实现 "import ... as ..."需要做什么

java - 声明一个全局变量以在所有 Activity 中使用

java - 打开新项目错误: Errors running builder 'Android Resource Manager' on project

java - Libgdx - Tiledmap 渲染的图 block 从屏幕上消失

java - 有没有办法在 libGDX(Android 和 iOS 项目)中推送通知?

java - 使用 Google App Engine(Java) 的 Facebook 聊天问题

java - 如何使用谓词通过 JpaRepository.findAll 获取不同的对象列表?

android - 避免将 null 作为 View 根传递(在 AlertDialog 中扩展自定义布局时)

java - 集合中的通配符构造函数