如何为循环中的形状着色?
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
并为另一个循环开始一个新循环。
为什么循环中的两个人物只画了一种颜色? 而我需要一个涂成黑色,一个涂成蓝色。 谢谢!
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
并为另一个循环开始一个新循环。