【问题标题】:libGDX touch in effect after touchlibGDX 触摸在触摸后生效
【发布时间】:2015-01-10 12:32:33
【问题描述】:

我使用以下代码将用户触摸与球对象的位置相匹配,因此当用户触摸球时它会弹回。代码:

int x1 = Gdx.input.getX();
int y1 = Gdx.input.getY();
Vector3 input = new Vector3(x1, y1, 0);
cam.unproject(input);

if(ball.getBoundingCircle().contains(input.x, input.y)) {
ballBounce();
}

但是我的触摸有问题。如果用户在屏幕上触摸某个位置片刻,并且一个球(稍后会出现更多)即将到达用户触摸的位置,则该球将识别自己被触摸,并且 ballBounce();方法将开始并继续到达相同位置的其他球,直到用户触摸屏幕上的另一个位置,但随后该位置将被固定直到新的位置......有人知道我如何绕过这个问题,所以如果用户停止触摸屏幕,那么他/她触摸的地方不会影响球对象吗?

【问题讨论】:

    标签: java android libgdx


    【解决方案1】:

    您似乎没有使用任何输入处理器。 让你的类实现 InputProcessor 并使你的 touchDown 方法看起来像这样。

    @Override
    touchDown(InputEvent event, float x, float y, int pointer, int button) {
        Vector3 input = new Vector3(x, y, 0);
        cam.unproject(input);
    
        if (ball.getBoundingCircle().contains(input.x, input.y)) {
            ballBounce();
        }
    }
    

    ClickListener (LibGDX API)

    【讨论】:

    • 当我搜索代码以识别用户触摸对象的位置时,这是我大部分时间遇到的示例。所以对于你的问题,我不知道。
    • 然后你应该实现 InputProcessor 并将你的代码添加到 touchDown 或 clicked 中,这样当玩家释放他/她的手指时你的输入向量坐标会被删除,并且当玩家再次按下时坐标会更新。
    • 那我可以只用touchDown吗?或者除非我特别推荐要在 touchUp 上删除的坐标,否则问题仍然存在?
    • 如果你在touchDown方法中使用它,当你不再触摸时它会停止扫描,所以不需要在touchUp方法中添加任何东西。测试一下。
    • 很高兴知道我只需要处理 touchDown 推荐,但我仍然遇到问题,想知道您是否可以继续帮助我?我可以只用 touchDown 方法实现 InputProcessor 并在其中使用具有球条件的方法(包括上述条件)并在“contains(input.x,input.y)”中使用 touchDown 的参数(而不是“输入...”)?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多