所以我有3个矩形的行为像包含方法的按钮。前两个按钮只是左右移动字符,但第三个是用户touchDown跳转,然后抛出一个当touchUp时球。 我的问题是,当按钮被按下时,像我按住跳转按钮同时按住并释放左/右按钮时,它们会混合起来。LibGdx多点触摸事件混淆
我知道有指针ID的东西,但它是混乱如地狱。
所以我有3个矩形的行为像包含方法的按钮。前两个按钮只是左右移动字符,但第三个是用户touchDown跳转,然后抛出一个当touchUp时球。 我的问题是,当按钮被按下时,像我按住跳转按钮同时按住并释放左/右按钮时,它们会混合起来。LibGdx多点触摸事件混淆
我知道有指针ID的东西,但它是混乱如地狱。
设置新InputProcessor到Gdx.input.setInputProcessor(),并检查是否触摸点被包含在你的矩形,这样的事情应该工作:
Gdx.input.setInputProcessor(new InputAdapter() {
@Override
public boolean touchDown(int screenX, int screenY, int pointer, int button) {
if(leftRect.contains(screenX, screenY)){
//move player left
return true;
}
if(rightRect.contains(screenX, screenY)){
//move player right
return true;
}
return false;
}
@Override
public boolean touchUp(int screenX, int screenY, int pointer, int button) {
if(jumpRect.contains(screenX, screenY)){
//make player jump
return true;
}
return false;
}
});
我强烈建议你使用Scene2D为用户界面相关的东西,它可能有点难以开始,但它会让你的UI编码更易于实施和维护。
你打算不接触坐标? – ossobuko
非常感谢!我认为我必须通过指针ID-s来处理自己的多点触摸事件,但事实证明它是默认完成的。 – WannabeHacker
很高兴能够提供帮助,请记住,接触点始终位于屏幕像素坐标中,如ossobuko所示,如果不使用像素完美的相机,则可能需要取消投影坐标。 –
每一个触摸都有一个指针索引。如果您使用的是Gdx.input.getX()或getY()方法,则它们将返回最后一次触摸并且仅返回最后一次触摸。最后**单**触摸。 – ossobuko