У меня есть карта 2D-плитки в java (с использованием libgdx no Tiled Map Editor), образованная квадратами, и я хочу, чтобы плитки постепенно становились темнее, пока они не будут видны. Так что в принципе я не хочу круглый свет. Единственный вариант, который я знаю, - это использовать альфа-канал и сделать каждый плит из источника, который является игроком, становится менее заметным. Я хочу знать, как это реализовать, используя шейдер. Я хочу сделать свою карту обычным образом с помощью spritebacth, а затем применить шейдер к моему spritebacth, чтобы я мог визуализировать световой эффект. Каждая плитка должна иметь свою видимость. Пример игры, в которой используется такая молния, я хочу: http://www.desura.com/games/fragile-soul
Выделите каждый фрагмент через 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)
. Все эти плитки будут полностью черными.