我正在用libgdx做我的第一件事。这是一个平铺的2D游戏。说我有两种类型的瓷砖:蓝色和绿色。这些是覆盖游戏领域一个单元格的32x32像素图像。我希望能够在拼贴之间创建过渡,例如附加图像右侧的拼贴。蓝色和绿色并不意味着图块中的所有像素都是相同的颜色,只是定义了像素的纹理。
我不是在询问算法 - 我已经通过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,我只需要在渲染过程中在另一个纹理上方绘制纹理的某些部分。
答案 0 :(得分:1)
Welp,我完成了它,它的外观如下:
不扩散:
有扩散:
我想,代码本身太大而且特定于项目,无法在此处发布。以下是步骤(LibGDX的实际类以粗体开头,以大写字母开头):
希望这对某人有用。如果您需要实际代码,请与我联系。