在libgdx中实现多个输入

时间:2016-02-06 13:03:55

标签: button input libgdx

我正在处理libgdx中的控件。我有 3个按钮:向上,向右和向左。如果单独点击按钮,情况就会正常。

同时点击2个按钮,例如右侧和上侧按钮,播放器没有平稳的跳跃。它被击中并且没有正确渲染。

我的部分代码:

//Up Button
buttonup.addListener(new InputListener() {
    @Override
    public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {

        gamehero.heroBody.setLinearVelocity(0, 4f);

        return true;
    }
});

//Right Button
buttonright.addListener(new InputListener() {

    @Override
    public boolean touchDown(InputEvent event, float x, float y, int pointer, int button){

        gamehero.heroBody.setLinearVelocity(2f, 0);
        return true;
    }

    @Override
    public void touchUp(InputEvent event, float x, float y, int pointer, int button) {

        gamehero.heroBody.setLinearVelocity(0, 0);
    }
});

//Left Button
buttonleft.addListener(new InputListener() {

    @Override
    public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {

        if gamehero.heroBody.setLinearVelocity(-2f, 0);
            return true;
    }

    @Override
    public void touchUp(InputEvent event, float x, float y, int pointer, int button) {

        gamehero.heroBody.setLinearVelocity(0, 0);

    }
});

我经历了很多帖子,特别是this,但它对我没有帮助。我觉得必须用指针完成某些事情,但我不知道如何使用按钮。如果我同时触摸2个按钮,有没有办法让播放器具有流畅的渲染效果?

1 个答案:

答案 0 :(得分:1)

每个按钮只应影响您的一个坐标方向的运动:x表示左/右,y表示向上。因此,不应将另一个方向的速度设置为0,而应保持不变(即将其设置为当前值,该值可能存储在gamehero中)。

e.g。你的向上按钮应该设置如下:

gamehero.heroBody.setLinearVelocity(gamehero.velocity.x, 4f);