Je cherche à créer un effet "spotlight" 2D qui permet de mettre en lumière plusieurs entités. C'est-à-dire, comme si plusieurs sprites tenaient des torches. Pour une seule entité (un projecteur), j'utilise une technique où je superpose un sprite dégradé et que le point central chasse cette entité. Cette technique fonctionne bien pour un seul projecteur. Voici une capture d'écran pour illustrer ce dont je parle:
Projecteur unique - Travaux
Le problème que je rencontre est que cette technique ne s'étend pas à plusieurs entités. Si je superpose une autre image de projecteur, je rencontre plusieurs problèmes. Voici une capture d'écran simulée:
Projecteurs multiples = problèmes
Le problème le plus évident est les coins visibles. Cela pourrait être résolu en rendant l'image du projecteur gigantesque pour couvrir tout le niveau, mais cela ne semble pas correct. Le deuxième problème, plus insoluble, est que je multiplie efficacement l'obscurité avec cette technique. Ainsi, chaque sprite ajouté a pour effet d'assombrir tout le monde. De toute évidence, j'aborde ce problème de manière incorrecte.
Des idées?
Efforts continus
Il y a eu une discussion sur les options de mélange dans les commentaires. Voici ma pensée actuelle. Dans mon exemple de projecteur unique ci-dessus, j'utilise un fichier image qui ressemble à ceci: (j'ai remplacé la transparence par la couleur verte pour faciliter l'illustration)
Comme discuté ci-dessus, le problème est que le mélange alpha de cette image avec une autre image ne produira pas l'effet souhaité. Au lieu de cela, il produira ceci:
Cela ne me semble pas être un problème d'options de mélange. Le problème, il me semble, est que ce type d'image a le masque de transparence et l'image (un carré noir) intégrés, alors qu'ils devraient être séparés.
Donc, au lieu d'une image noire avec une transparence découpée intégrée, je devrais utiliser des masques de transparence qui sont utilisés au moment de l'exécution contre le carré noir. En faisant cela, je ne peux toujours pas utiliser un masque de transparence blanc et noir traditionnel ou il rencontrera le même problème. Voici un exemple, cette fois le blanc et le noir représentent le blanc et le noir:
La solution, semble-t-il, serait d'appliquer un masque de transparence qui utilise lui-même la transparence. Quelque chose comme ça: (vert = transparent)
De cette façon, plusieurs masques de transparence pourraient être mélangés alpha et ensuite utilisés comme un masque de transparence contre le carré noir. Voici un exemple de deux des masques de transparence alpha mélangés ensemble:
Quoi qu'il en soit, c'est l'approche que je travaille à mettre en œuvre. Je publierai les résultats si cela fonctionne. Ce que je ne sais pas (actuellement), c'est si je peux utiliser un masque de transparence qui a lui-même de la transparence.