for (byte i = 0; i < 20; i++) {maxDistance = 10 * Gdx.graphics.getDeltaTime();
        if (Gdx.input.isTouched(i) && Gdx.input.getY()<= 400) {
            player1TouchPosition.set(Gdx.input.getX(i), Gdx.input.getY(i), 0);
            camera.unproject(player1TouchPosition);
        }
        player1Tmp.set(player1TouchPosition.x, player1TouchPosition.y).sub(player1Rectangle.x, player1Rectangle.y);
        if (player1Tmp.len() <= maxDistance) {
            player1Rectangle.x = player1TouchPosition.x;
            player1Rectangle.y = player1TouchPosition.y;
        } else {
            player1Tmp.nor().scl(maxDistance);
            player1Rectangle.x += player1Tmp.x;
            player1Rectangle.y += player1Tmp.y;
        }
        if (Gdx.input.isTouched(i) && Gdx.input.getY() >= 401) {
            player2TouchPosition.set(Gdx.input.getX(i), Gdx.input.getY(i), 0);
            camera.unproject(player2TouchPosition);
        }
        player2Tmp.set(player2TouchPosition.x, player2TouchPosition.y).sub(player2Rectangle.x, player2Rectangle.y);
        if (player2Tmp.len() <= maxDistance) {
            player2Rectangle.x = player2TouchPosition.x;
            player2Rectangle.y = player2TouchPosition.y;
        } else {
            player2Tmp.nor().scl(maxDistance);
            player2Rectangle.x += player2Tmp.x;
            player2Rectangle.y += player2Tmp.y;
        }
    }


您好,我正在使用此代码移动到触摸位置。但是我需要多点触控。没用当我添加player2时,它不起作用。我不了解多点触控。我该如何解决?

最佳答案

为什么不使用InputProcessor?
界面中一种方法的一个示例

 @Override
    public boolean touchDown(int screenX, int screenY, int pointer, int button) {
        if(pointer =< 2){
            touches.get(pointer).touchX = screenX;
            touches.get(pointer).touchY = screenY;
            touches.get(pointer).touched = true;
        }
        return true;
    }


在上面的示例中,您最多可以使用2次触摸。
实际上1个指针就是1触摸。

Documentation

screenXscreenY是触摸位置。请注意,与正交摄影机相比,您必须缩放此位置。指针是事件的指针。

如果创建InputProcessor,则可以使用以下命令启动它

Gdx.input.setInputProcessor(/*Your class*/);


编辑:

来自注释的示例:

for (Button button : /*ArrayList*/{
            if (positionX >= button1.getX() && positionX <= button1.getX() + button1.getWidth() &&
                    positionY >= button1.getY() && positionY <= button1.getY() + button1.getHeight()){
        //Update the position from the specific button
}


您可以从接口touchDragged()在方法内部使用此代码。

关于java - Java LibGDX多点触控问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39065633/

10-13 04:30