複数のエンティティにスポットライトを使用できる2D「スポットライト」効果を作成したいと考えています。すなわち、いくつかのスプライトがトーチを保持しているかのように。単一のエンティティ(1つのスポットライト)の場合、グラデーションスプライトをオーバーレイし、中心点でそのエンティティを追跡する手法を使用します。この手法は、単一のスポットライトでうまく機能します。これが私が話していることを説明するスクリーンショットです。
シングルスポットライト-作品
私が遭遇する問題は、この手法が複数のエンティティに拡張されないことです。別のスポットライト画像をオーバーレイすると、いくつかの問題が発生します。シミュレートされたスクリーンショットは次のとおりです。
複数のスポットライト=問題
最も明らかな問題は、目に見える角です。これは、レベル全体をカバーするようにスポットライト画像を巨大にすることで解決できますが、それは適切ではありません。2番目の難解な問題は、このテクニックを使って暗闇を効果的に増やしていることです。したがって、追加された各スプライトは、他のすべての人を暗くする効果があります。明らかに、この問題に間違って近づいています。
何か案は?
継続的な取り組み
コメントにはブレンドオプションに関する議論がいくつかあります。これが私の現在の考え方です。上記の単一のスポットライトの例では、次のような画像ファイルを使用しています:(わかりやすくするために、透明部分を緑色に置き換えました)
上記で説明したように、問題は、この画像を別の画像とアルファブレンドしても、望ましい効果が得られないことです。代わりに、これが生成されます:
それはブレンドオプションの問題として私を襲いません。問題は、私には、その種の画像には、透明マスクと画像(黒い正方形)が組み込まれているため、それらを分離する必要があるということです。
そのため、カットアウト透明度が組み込まれた黒い画像の代わりに、実行時に黒い正方形に対して使用される透明度マスクを使用する必要があります。それを行うとき、私はまだ伝統的な白と黒の透明マスクを使用することができません、または同じ問題に遭遇します。次に例を示します。今回は白と黒が白と黒を表します。
解決策は、それ自体が透明度を利用する透明度マスクを適用することであると思われます。このようなもの:(緑=透明)
これにより、複数の透明マスクをアルファブレンドし、黒い正方形に対する透明マスクとして使用できます。アルファブレンドされた2つの透明度マスクの例を次に示します。
とにかく、それが私が実装に取り組んでいるアプローチです。これが機能する場合、結果を投稿します。(現時点では)わからないのは、それ自体が透明性を持つ透明マスクを使用できるかどうかです。