屏幕坐标中心错误

时间:2016-01-05 16:17:59

标签: java android

我正在编写Android游戏,我正试图将角色放在屏幕中间(X轴)。

为了获得屏幕的中间部分,我通过以下命令获得屏幕宽度:

int phoneWidth = Resources.getSystem().getDisplayMetrics().widthPixels;

然后我将phoneWidth除以2,并希望角色出现在屏幕中间,但它会略微向右显示。

这是我使用的代码:

public void drawCharacter() {
        charImg = new Texture("pika.PNG");
        charSprite = new Sprite(charImg);
        float ahaha = Gdx.graphics.getWidth();
        charPosX = (float)phoneWidth/ 2;
    }

@Override
    public void render() {
        ch.stop();
        double elapsedSeconds = ch.getSeconds();

        checkLevel();
        handleObstacles();

        scrollTimer = scrollTimer + Gdx.graphics.getDeltaTime() / 2;
        if (scrollTimer > 1.0f)
            scrollTimer = 0.0f;

        sprite.setV(scrollTimer);
        sprite.setV2(scrollTimer + 2);

        Gdx.gl.glClearColor(0, 0, 0, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

        charSprite.setPosition(charPosX, charPosY);
        for (int i = 0; i < obstacles.size(); i++) {
            obstacleSprites.get(i).setPosition(obstacles.get(i).getPosX(), obstacles.get(i).getPosY());
        }

        spriteBatch.begin();
        sprite.draw(spriteBatch);
        charSprite.draw(spriteBatch);
        for (int i = 0; i < obstacleSprites.size(); i++) {
            obstacleSprites.get(i).draw(spriteBatch);
        }
        spriteBatch.end();

        moveCharacter();
        moveObstacle();
    }

有谁知道这个错误来自哪里?

1 个答案:

答案 0 :(得分:2)

精灵的左手边缘位于屏幕中间。

从画面宽度的一半减去精灵宽度的一半,以画出水平居中的精灵。