Я ищу, чтобы создать эффект "прожектора" 2D, который позволяет прожектор на несколько объектов. Т.е. как будто несколько спрайтов держали факелы. Для одного объекта (одного прожектора) я использую технику, в которой я накладываю градиентный спрайт и получаю, чтобы центральная точка преследовала этот объект. Эта техника отлично работает для одного прожектора. Вот скриншот, чтобы проиллюстрировать, о чем я говорю:
Одиночный прожектор - Работы
Проблема, с которой я сталкиваюсь, заключается в том, что этот метод не распространяется на несколько объектов. Если я наложу другое изображение в центре внимания, я столкнусь с несколькими проблемами. Вот смоделированный скриншот:
Несколько прожекторов = проблемы
Наиболее очевидная проблема - видимые углы. Эту проблему можно решить, сделав изображение прожектора гигантским, чтобы охватить весь уровень, но это не так. Вторая и более сложная проблема заключается в том, что я эффективно умножаю тьму с помощью этой техники. Таким образом, каждый добавленный спрайт затемняет всех остальных. Очевидно, я неправильно подхожу к этой проблеме.
Есть идеи?
Продолжая усилия
Там было некоторое обсуждение вариантов смешивания в комментариях. Вот мое нынешнее мышление. В моем приведенном выше примере с одним прожектором я использую файл изображения, который выглядит примерно так: (я заменил прозрачность зеленым цветом, чтобы его было легче проиллюстрировать)
Как обсуждалось выше, проблема заключается в том, что альфа-смешение этого изображения с другим изображением не даст желаемого эффекта. Вместо этого это произведет это:
Это не кажется мне проблемой смешивания вариантов. Проблема, как мне кажется, заключается в том, что в изображение такого типа встроены маска прозрачности и изображение (черный квадрат), когда они должны быть разделены.
Таким образом, вместо черного изображения со встроенной прозрачностью, я должен использовать маски прозрачности, которые используются во время выполнения против черного квадрата. При этом я все еще не могу использовать традиционную черно-белую маску прозрачности, иначе она столкнется с той же проблемой. Вот пример, на этот раз белый и черный представляют белый и черный:
Похоже, что решением было бы применить маску прозрачности, которая сама использует прозрачность. Как то так: (зелёный = прозрачный)
Таким образом, несколько масок прозрачности можно альфа-смешивать вместе, а затем использовать в качестве маски прозрачности против черного квадрата. Вот пример двух альфа-масок прозрачности, смешанных вместе:
Во всяком случае, это подход, над которым я работаю. Я опубликую результаты, если это работает. Чего я не знаю (в настоящее время), так это того, могу ли я использовать маску прозрачности, которая сама по себе имеет прозрачность.