猿问

尝试绘制填充视口的圆形网格,但网格从中心开始

我使用 ShapeRenderer 在特定的 X,Y 坐标处绘制圆圈,从 0,0 开始,填充到 50,50,之间有间隙。

我在这里遗漏了一些明显的东西吗?

我创建了一个像这样的点数组:

[[0,0],[0,2]...[50,48],[50,50]]

这是相关代码:

public void create() {

        camera = new OrthographicCamera();

        viewport = new FitViewport(100, 100, camera);

        renderer = new ShapeRenderer();

        grid = new PointGrid(50, 50);

    }

public void render() {

        Gdx.gl.glClearColor(0,0,0,0);

        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);


        renderer.begin(ShapeRenderer.ShapeType.Filled);

        renderer.setProjectionMatrix(camera.combined);

        renderer.setColor(Color.WHITE);


        for (int i = 0; i < grid.getPoints().size; i++) {

            Vector2 point = grid.getPoints().get(i);

            renderer.circle(point.x, point.y, 1, 32);

        }


        renderer.end();


        camera.update();

    }

jeck猫
浏览 91回答 2
2回答

慕妹3146593

当您使用视口来管理相机时,您需要调用viewport.update(...)调整大小方法。public&nbsp;void&nbsp;resize&nbsp;(int&nbsp;width,&nbsp;int&nbsp;height)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;viewport.update(width,&nbsp;height,&nbsp;true); }传递true到 update 方法会将 0,0 放在屏幕的左下角而不是中心。如果您希望圆之间有间隙,则需要更小的半径或更大的步长。现在,它们之间有 2 个单位的步长,并且它们的直径为 2 个单位,因此它们彼此接触。

临摹微笑

很确定相机默认看着 0,0,这意味着它将把 0,0 放在中心。所以你想将相机的位置设置为 - SCREEN_WIDTH / 2, - SCREEN_HEIGHT / 2您可以使用 Gdx.graphics.getWidth() / getHeight() 获取屏幕尺寸
随时随地看视频慕课网APP

相关分类

Java
我要回答