我在java中使用了二维平铺地图(使用libgdx no Tiled Map Editor),并且我希望平铺逐渐变暗,直到它们不可见为止。所以基本上我不想圆灯。我知道的唯一选择是使用alpha通道,并使来自作为播放器的源的每个tile变得不那么明显。我想知道如何使用着色器实现此功能。我想用spritebacth正常渲染我的地图,然后将着色器应用到我的spritebacth,这样我就可以渲染光效了。每个瓷砖应该具有自己的可见性。使用我想要的那种闪电的游戏示例是:http://www.desura.com/games/fragile-soul
答案 0 :(得分:0)
通过SpriteBatch
渲染每个磁贴本身,并使用spriteBatch.setColor(r, g, b, a)
使用不同的"灰色"值。
播放器所在的磁贴将以白色开头,因此spriteBatch.setColor(1, 1, 1, 1)
在渲染之前。然后在半径范围内线性降低其他亮度的亮度。
例如,播放器旁边的所有磁贴都可能会spriteBatch.setColor(0.8f, 0.8f, 0.8f, 1f)
,从而产生稍暗的磁贴。你这样做直到你通过spriteBatch.setColor(0, 0, 0, 1)
达到黑色。所有这些瓷砖都是完全黑色的。