Sto cercando di creare un effetto "riflettore" 2D che consenta di far luce su più entità. Cioè, come se diversi folletti reggessero torce. Per una singola entità (un riflettore), utilizzo una tecnica in cui sovrappongo uno sprite di gradiente e il punto centrale insegue quell'entità. Questa tecnica funziona bene per un singolo riflettore. Ecco uno screenshot per illustrare di cosa sto parlando:
Spotlight singolo: funziona
Il problema che incontro è che questa tecnica non si estende a più entità. Se sovrappongo un'altra immagine di riflettori mi imbatto in diversi problemi. Ecco uno screenshot simulato:
Riflettori multipli = Problemi
Il problema più ovvio sono gli angoli visibili. Ciò potrebbe essere risolto rendendo l'immagine dei riflettori gigantesca per coprire l'intero livello, ma ciò non sembra giusto. Il secondo e più intrattabile problema è che sto moltiplicando efficacemente l'oscurità con questa tecnica. Quindi ogni sprite aggiunto ha l'effetto di oscurare tutti gli altri. Chiaramente sto affrontando questo problema in modo errato.
Qualche idea?
Sforzi continui
C'è stata qualche discussione sulle opzioni di fusione nei commenti. Ecco il mio pensiero attuale. Nel mio esempio di singolo spotlight sopra, uso un file di immagine che assomiglia a questo: (ho sostituito la trasparenza con il colore verde per semplificare l'illustrazione)
Come discusso in precedenza, il problema è che la fusione alfa dell'immagine con un'altra immagine non produrrà l'effetto desiderato. Invece produrrà questo:
Questo non mi sembra un problema di opzioni di fusione. Il problema, a mio avviso, è che quel tipo di immagine ha la maschera di trasparenza e l'immagine (un quadrato nero) incorporato, quando dovrebbero essere separate.
Quindi, invece di un'immagine nera con una trasparenza ritagliata incorporata, dovrei usare maschere di trasparenza che vengono utilizzate in fase di esecuzione contro il quadrato nero. Quando lo faccio, non riesco ancora a usare una tradizionale maschera per trasparenti bianca e nera o si imbatterà nello stesso problema. Ecco un esempio, questa volta il bianco e il nero rappresentano il bianco e il nero:
La soluzione, a quanto pare, sarebbe quella di applicare una maschera di trasparenza che utilizza essa stessa la trasparenza. Qualcosa del genere: (verde = trasparente)
In questo modo, più maschere di trasparenza potrebbero essere miscelate alfa insieme e quindi utilizzate come maschera di trasparenza contro il quadrato nero. Ecco un esempio di due maschere di trasparenza alfa miscelate insieme:
Comunque, questo è l'approccio che sto lavorando per implementare. Pubblicherò i risultati se questo funziona. Quello che non so (al momento) è se posso usare una maschera di trasparenza che ha di per sé trasparenza.