【问题标题】:LIbGDX Multiplayer Pong w/ Multiple Touch InputsLIbGDX 多人乒乓球带多点触控输入
【发布时间】:2014-02-19 04:21:16
【问题描述】:

我想创建一个允许两个玩家在同一设备上打乒乓球的移动应用程序。每个球员将抓住设备的一端,并能够在 y 轴上来回移动他们的守门员。我正在使用带有 LibGDX 的 Java 开发游戏,但我无法让多个输入工作。我可以让平台记录输入来自左侧或右侧(确定哪个玩家正在移动),我可以使用它来单独移动每个玩家,但我不能让他们这样做同时。

这是我目前设置运动的方式:

        PlayerPaddle playerOnePaddle = ((GameScreen) currentScreen).getPlayerOnePaddle();
        PlayerPaddle playerTwoPaddle = ((GameScreen) currentScreen).getPlayerTwoPaddle();
        Vector2 touchPos = new Vector2(Gdx.input.getX(), Gdx.input.getY() + playerOnePaddle.height / 2);

        if (Gdx.input.getX() < Gdx.graphics.getWidth() / 2)
        {
            playerOnePaddle.pos.y = Gdx.graphics.getHeight() - touchPos.y;
        }
        if (Gdx.input.getX() > Gdx.graphics.getWidth() / 2)
        {
            playerTwoPaddle.pos.y = Gdx.graphics.getHeight() - touchPos.y;
        }

这适用于单独输入,这意味着我可以点击屏幕左侧并移动左侧玩家,我可以点击屏幕右侧并移动右侧玩家,但我不能同时移动每个玩家时间,这将打败游戏的重点。我需要具体的示例来说明如何实现这一点,因为我对 LibGDX 输入的经验非常有限,并且在四处搜索之后我无法找到任何正确的方法来做到这一点。我考虑过对第二个输入进行多线程处理,但这只会使代码混乱并使逻辑不对称

【问题讨论】:

    标签: java android io touch libgdx


    【解决方案1】:

    屏幕上的每一次触摸都会给出一个int 指针。第一次触摸将获得指针 0,第二次将获得指针 1。如果您松开触摸,则释放指针并将其交给下一次触摸(它将始终占用第一个空闲指针)。我建议您检查前 5 个指针以确保:

    for (int i=0; i<5; i++){
        if (!Gdx.input.isTouched(i)) continue;
        Vector2 touchPos = new Vector2(Gdx.input.getX(i), Gdx.input.getY(i) + playerOnePaddle.height / 2);
        if (Gdx.input.getX(i) < Gdx.graphics.getWidth() / 2){
            playerOnePaddle.pos.y = Gdx.graphics.getHeight() - touchPos.y;
        }
        if (Gdx.input.getX(i) > Gdx.graphics.getWidth() / 2){
            playerTwoPaddle.pos.y = Gdx.graphics.getHeight() - touchPos.y;
        }
    }
    

    顺便说一句,您应该使用相机并取消触摸:

    camera.unproject(touchPos.set(Gdx.input.getX(i), Gdx.input.getY(i), 0));
    

    并使用touchPos.xtouchPos.y 作为您的触摸。这样它在每个屏幕分辨率下的工作方式都是一样的。

    【讨论】:

    • 我很欣赏关于取消投影相机的额外建议。谢谢。
    猜你喜欢
    • 2014-09-26
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多