我已经完成了我的电脑版和测试我的libgdx游戏,并且在电脑上看起来很好,但是当我用两部手机安装Android(三星Galaxy S3 mini和三星Galaxy S2)时,我遇到了一些问题,我没想到会发生这种情况。基本上,在我的1v1播放器版本上,每个播放器都有自己的左右触控。玩家具有恒定的速度(速度矢量的长度是恒定的)但是无论何时玩家触摸任何控制,速度矢量的方向都会改变。我的代码如下所示:
private void handleInput(float delta) {
if (Gdx.input.isTouched()) {
for (int i = 0; i < 20; i++) {
if (Gdx.input.isTouched(i)) {
touchedX = Gdx.input.getX(i);
touchedY = Gdx.input.getY(i);
// PLAYER 1
if (touchedX <= dB) {
// RED RIGHT
if (touchedY <= h / 2 + h / playerSpacing + dB
&& touchedY >= h / 2 + h / playerSpacing) {
turnLeft(players[0], delta);
}
// RED LEFT
else if (touchedY <= h / 2 - h / playerSpacing
&& touchedY >= h / 2 - h / playerSpacing - dB) {
turnRight(players[0], delta);
}
}
//PLAYER 2
else if (touchedX >= w - dB) {
// BLUE RIGHT
if (touchedY <= h / 2 + h / playerSpacing + dB
&& touchedY >= h / 2 + h / playerSpacing) {
turnRight(players[1], delta);
}
// BLUE LEFT
else if (touchedY <= h / 2 - h / playerSpacing
&& touchedY >= h / 2 - h / playerSpacing - dB) {
turnLeft(players[1], delta);
}
}
}
}
}
它在实际的Android设备上效果不佳,触摸得不能流畅识别,并且对玩家的完全控制也会受到影响。任何想法为什么会发生? LibGdx有多坏的多点触控支持,或者我做错了什么?
答案 0 :(得分:1)
问题是你没有取消投影接触点。
您必须将触摸点取消投影为
touchpoint = new Vector3();
camera.unproject(touchpoint.set(Gdx.input.getX(i),Gdx.input.getY(i),0);
touchedX = touchpoint.x;
touchedY = touchpoint.y;
我也建议你使用输入处理器而不是让X&amp;来自函数Gdx.input.getX(i),Gdx.input.getY(i)的Y值作为Inputprocesor,您可以更好地控制多点触控事件,并且您不必编写用于获取触摸点的循环,它也会为您提供触摸指针在其功能