libGdx多点触控问题

时间:2013-09-07 13:33:53

标签: libgdx multi-touch

我已经完成了我的电脑版和测试我的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有多坏的多点触控支持,或者我做错了什么?

1 个答案:

答案 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,您可以更好地控制多点触控事件,并且您不必编写用于获取触摸点的循环,它也会为您提供触摸指针在其功能