我正在处理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个按钮,有没有办法让播放器具有流畅的渲染效果?
答案 0 :(得分:1)
每个按钮只应影响您的一个坐标方向的运动:x表示左/右,y表示向上。因此,不应将另一个方向的速度设置为0,而应保持不变(即将其设置为当前值,该值可能存储在gamehero
中)。
e.g。你的向上按钮应该设置如下:
gamehero.heroBody.setLinearVelocity(gamehero.velocity.x, 4f);