Я хочу створити 2D ефект "прожектора", який дозволяє прожектор на декілька об'єктів. Тобто, ніби кілька спрайтів тримали смолоскипи. Для однієї сутності (один прожектор) я використовую техніку, коли я накладаю градієнтний спрайт і переслідую центральну точку за цією сутністю. Ця методика чудово працює для одного прожектора. Ось скріншот для ілюстрації того, про що я говорю:
Єдиний прожектор - працює
Проблема, з якою я стикаюся, полягає в тому, що ця методика не поширюється на кілька об'єктів. Якщо я накладу ще одне зображення прожектора, у мене виникають кілька проблем. Ось модельований скріншот:
Кілька прожекторів = Проблеми
Найбільш очевидна проблема - видимі кути. Це можна вирішити, зробивши зображення прожектора гігантським, щоб охопити весь рівень, але це не здається правильним. Друга і більш нерозв'язна проблема полягає в тому, що я ефективно примножую темряву за допомогою цієї техніки. Таким чином, кожен доданий спрайт має ефект затемнення всіх інших. Ясно, що я до цієї проблеми підходжу неправильно.
Будь-які ідеї?
Постійні зусилля
У коментарях були обговорені варіанти змішування. Ось моє сьогоднішнє мислення. У своєму прикладі єдиного прожектора я використовую файл зображення, який виглядає приблизно так: (Я замінив прозорість на зелений колір, щоб полегшити його ілюстрацію)
Як обговорювалося вище, проблема полягає в тому, що альфа-змішування цього зображення з іншим зображенням не дасть бажаного ефекту. Замість цього воно призведе до цього:
Це не вражає мене проблемою змішування варіантів. Мені здається, проблема полягає в тому, що в такому зображенні вбудована маска прозорості та зображення (чорний квадрат), коли їх слід розділяти.
Тож замість чорного зображення із вбудованою прозорістю вирізаної форми я повинен використовувати маски прозорості, які використовуються під час виконання чорного квадрата. Роблячи це, я все ще не можу використовувати традиційну білу та чорну маску прозорості, інакше вона зіткнеться з тією ж проблемою. Ось приклад, на цей раз білий і чорний являють собою біле і чорне:
Здається, рішенням було б застосувати маску прозорості, яка сама використовує прозорість. Приблизно так: (зелений = прозорий)
Таким чином, декілька масок прозорості можна було б поєднати між собою альфа, а потім використовувати як маску прозорості проти чорного квадрата. Ось приклад двох з масок прозорості альфа, змішаних разом:
У будь-якому випадку, це такий підхід, над яким я працюю. Я опублікую результати, якщо це допоможе. Те, що я не знаю (на даний момент), це якщо я можу використовувати маску прозорості, яка сама має прозорість.