java - 试图在 LibGDX 中画一个圆圈

标签 java android libgdx 2d render

这是非常基本的,但我不知道出了什么问题。基本上我试图在我的一个对象的某个区域周围画一个圆圈。我在构造函数中初始化了一个 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/

相关文章:

java - 导出和导入 SQLite 数据库

java - 使用 ArrayLIst 在太空入侵者风格的游戏中创建子弹对象

android - 错误 :String types not allowed

java - GLSL ES语法错误: '(' parse error after main()

java - 在设备的本地存储上创建 Android 保存文件?

java - LibGDX:Sprite.setBounds 无法与 volatile 坐标和 InputAdapter 一起正常工作

java - 使用 JPQL 和 BooleanExpression 进行分页

java - 如何编写语句来检查我的用户指定的异常 CustomerNotEnrolledException

java - 华为特定操作系统风格在我的文件夹中创建奇怪的文件

java - 将十六进制字符串转换为 byte[] 数组时出现错误 "java.lang.StringIndexOutOfBoundsException"