0

我已经完成了我的 pc 版本并测试了我的 libgdx 游戏,在 pc 上看起来还不错,但是当我在两部带有 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 的多点触控支持不好,或者我做错了什么?

4

1 回答 1

1

问题是您没有投影接触点。

您必须将接触点取消投影为

touchpoint = new Vector3();

camera.unproject(touchpoint.set(Gdx.input.getX(i),Gdx.input.getY(i),0);
touchedX = touchpoint.x;
touchedY = touchpoint.y;

我还建议您使用 inputprocessor 而不是从函数 Gdx.input.getX(i)、Gdx.input.getY(i) 获取 X 和 Y 值,因为 Inputprocesor 让您可以更好地控制多点触控事件,您不必编写用于获取触摸点的循环它在其功能中也为您提供触摸指针

于 2013-09-07T19:13:27.053 回答