这是非常基本的,但我不知道出了什么问题。基本上我试图在我的一个对象的某个区域周围画一个圆圈。我在构造函数中初始化了一个 ShapeRenderer
(称为 srDebugCircle),并在 render()
方法中使用这个 for 循环来绘制每个对象。
for (GameObject object : levels.get(LEVEL_INDEX)) {
if (object.getType() == ObjectType.SWINGING_SPIKES) {
object.draw(batch);
srDebugCircle.begin(ShapeType.Filled);
srDebugCircle.circle(object.getxPos() + object.getWidth()/2, object.getyPos(), object.getWidth()/2);
srDebugCircle.setColor(Color.BLACK);
srDebugCircle.end();
}
if (object.getType() == ObjectType.COIN && (Coin) object).isVisible()) {
object.draw();
}
...
}
问题是,当我为圆圈添加代码时,我只能看到 15 个对象中的 4 个。当我删除它/评论它时,它像往常一样工作 - 但是,在这两种情况下,我都看不到黑色实心圆圈。
我专门说这部分:
srDebugCircle.begin(ShapeType.Filled);
srDebugCircle.circle(object.getxPos() + object.getWidth()/2, object.getyPos(), object.getWidth()/2);
srDebugCircle.setColor(Color.BLACK);
srDebugCircle.end();
有人能看出我为什么会遇到这个问题吗?
最佳答案
Springrbua 的答案的替代方法是使用 Pixmaps 而不是 ShapeRenderer 进行绘制。在 SpriteBatch 和 ShaperRenderer 之间切换是一项昂贵的操作,并且 Pixmaps 不需要结束 SpriteBatch。 Pixmap 提供的绘制方法少于 ShapeRenderer,但它确实包括绘制实心圆。
Pixmap pixmap = new Pixmap(width, height, Pixmap.Format.RGBA8888);
pixmap.setColor(Color.BLACK);
pixmap.fillCircle(x, y, r);
Texture texture = new Texture(pixmap);
// render
batch.begin();
batch.draw(texture, x, y);
batch.end();
关于java - 试图在 LibGDX 中画一个圆圈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29035553/