两块瓷砖之间的扩散

时间:2013-10-24 21:00:18

标签: opengl libgdx

我正在用libgdx做我的第一件事。这是一个平铺的2D游戏。说我有两种类型的瓷砖:蓝色和绿色。这些是覆盖游戏领域一个单元格的32x32像素图像。我希望能够在拼贴之间创建过渡,例如附加图像右侧的拼贴。蓝色和绿色并不意味着图块中的所有像素都是相同的颜色,只是定义了像素的纹理。

enter image description here

我不是在询问算法 - 我已经通过JavaScript在canvas中完成了它。我只需要指出在libgdx中特别使用哪些类/技术/解决方案。

所以我需要从蓝色纹理中取出像素并将它们绘制在绿色纹理上方。有没有办法用着色器或者直接从蓝色瓷砖的纹理中获取像素值?

假设我已经在TextureAtlas中加载了所有纹理(尚未计算过渡精灵)。接下来应该使用哪些类来获得预期的效果?

更新:以下是我的代码目前的一个粗略示例。我的gameScreen.render()方法看起来像这样:

batch.begin();
for (int x = 0; x < width; x++) {
        for (int y = 0; y < height; y++) {
                Sprite sprite = getFloorSpriteByCell(cells[x][y]);
                batch.draw(sprite, x * 32, y * 32);
        }
}
batch.end();

并且在getFloorSpriteByCell()中我选择了一些预先加载的精灵,这些都是花哨的gui-thing中没有花哨的关卡编辑。

我不使用tilemaps,我只需要在渲染过程中在另一个纹理上方绘制纹理的某些部分。

1 个答案:

答案 0 :(得分:1)

Welp,我完成了它,它的外观如下:

不扩散:

enter image description here

有扩散:

enter image description here

我想,代码本身太大而且特定于项目,无法在此处发布。以下是步骤(LibGDX的实际类以粗体开头,以大写字母开头):

  1. 选择要放入和放入的图像的单个像素 将它们变成 Pixmap (如果你的纹理在 TextureAtlas 正如我所拥有的那样,使用this question on GoogleCode中的 PixmapTextureAtlas 类来获取Pixmaps)。
  2. 将这些Pixmaps绘制为纹理
  3. 然后,像往常一样,将所有纹理绘制到 SpriteBatch
  4. 希望这对某人有用。如果您需要实际代码,请与我联系。

相关问题