如何为循环中的形状着色?

How to colorize shapes in a loop?

为什么循环中的两个人物只画了一种颜色? 而我需要一个涂成黑色,一个涂成蓝色。 谢谢!

public void draw(Batch batch, float parentAlpha)
{
    super.draw(batch, parentAlpha);

    renderer.setProjectionMatrix(Main.viewport.getCamera().combined);
    renderer.setTransformMatrix(batch.getTransformMatrix());
    renderer.begin(ShapeRenderer.ShapeType.Line);

    for (int i = 0; i < rect2.size(); i++)
    {
        renderer.setColor(Color.BLACK);
        renderer.rect(rect2.get(i).getX(), rect2.get(i).getY(),
                rect2.get(i).getWidth(), rect2.get(i).getHeight());
    }
    for (int i = 0; i < enemy.size(); i++)
    {
        renderer.setColor(Color.BLUE);
        renderer.rect(enemy.get(i).getX(), enemy.get(i).getY(),
                enemy.get(i).getWidth(), enemy.get(i).getHeight());
    }
    renderer.end();
}

如果您查看 LibGDX 文档,您可以找到有关 renderer(如您命名的)以及如何用不同颜色为多个形状着色的页面。通过使用 renderer.begin() 你可以设置一个形状。然后给出该形状的所有属性(包括尺寸和颜色等)。一旦你使用 renderer.end() 形状就会被绘制出来。当您再次使用 renderer.begin() 时,您定义了一个具有新属性的新形状,您可以在其中再次选择不同的尺寸和颜色。

LibGDX 文档中的示例代码: https://libgdx.badlogicgames.com/ci/nightlies/docs/api/com/badlogic/gdx/graphics/glutils/ShapeRenderer.html

 shapeRenderer.begin(ShapeType.Line);
 shapeRenderer.setColor(1, 1, 0, 1);
 shapeRenderer.line(x, y, x2, y2);
 shapeRenderer.rect(x, y, width, height);
 shapeRenderer.circle(x, y, radius);
 shapeRenderer.end();

 shapeRenderer.begin(ShapeType.Filled);
 shapeRenderer.setColor(0, 1, 0, 1);
 shapeRenderer.rect(x, y, width, height);
 shapeRenderer.circle(x, y, radius);
 shapeRenderer.end();

tl;dr:在每个循环后结束 shapeRenderer 并为另一个循环开始一个新循环。