为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

jeck猫 2023-07-19 10:04:18
我使用 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();    }
查看完整描述

2 回答

?
慕妹3146593

TA贡献1820条经验 获得超9个赞

当您使用视口来管理相机时,您需要调用viewport.update(...)调整大小方法。

public void resize (int width, int height) {
    viewport.update(width, height, true);
}

传递true到 update 方法会将 0,0 放在屏幕的左下角而不是中心。

如果您希望圆之间有间隙,则需要更小的半径或更大的步长。现在,它们之间有 2 个单位的步长,并且它们的直径为 2 个单位,因此它们彼此接触。



查看完整回答
反对 回复 2023-07-19
?
临摹微笑

TA贡献1982条经验 获得超2个赞

很确定相机默认看着 0,0,这意味着它将把 0,0 放在中心。所以你想将相机的位置设置为 - SCREEN_WIDTH / 2, - SCREEN_HEIGHT / 2

您可以使用 Gdx.graphics.getWidth() / getHeight() 获取屏幕尺寸


查看完整回答
反对 回复 2023-07-19
  • 2 回答
  • 0 关注
  • 90 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信