2012-08-27 16 views
5

Mi piacerebbe fare in modo che un CCNode (potrebbe essere CCLayer, CCSprite, ecc.) Possa mascherare tutti i suoi figli con uno shader in modo che possano essere mascherati progressivamente mentre si avvicinano ai limiti del nodo senza dover modificare il loro valore di opacità direttamente. Ad esempio, un menu potrebbe assomigliare a questo:Come mascherare gli sprite in cocos2d con l'alfa di una sfumatura?

Menu with items that fade near the edges

La maschera in questo caso sarebbe un gradiente, che potrebbe essere simile a questa:

enter image description here

risposta

0

Il tutorial di base per la creazione di uno sprite di mascheramento è disponibile allo Ray Wenderlich's website, anche se non sono sicuro che vi consenta di mascherare anche i nodi figli. In caso contrario, sarà probabilmente necessario utilizzare CCRenderTexture, disegnare i nodi figli in texture, quindi mascherarli definitivamente con il nodo di mascheramento creato nell'esercitazione.

+0

Ho visto quel tutorial, ma non risponde alla mia domanda. – GoldenJoe

+0

GoldenJoe, non puoi risolvere il tuo compito senza renderizzare il target o implementare il gradiente alfa in tutti i bambini. – brigadir

+0

Non sono completamente chiaro su come cocos2d esegue il rendering, ma non è ogni nodo solo un quad con una trama? Se i bambini eseguono il rendering sui nodi padre, allora dovrebbe funzionare il nodo genitore. Non ho idea di come farlo adesso, però ... – GoldenJoe

0

So che questo probabilmente non è il meccanismo che si desidera, ma recentemente ho voluto un gradiente alfa che variava in modo circolare. Avevo del testo che ruotava attorno a uno sprite e volevo solo che fosse visibile quando era in cima al cerchio.

L'approccio più semplice per me è stato quello di creare uno sprite che fosse una band circolare in cui la band era un "nero" completo nella parte inferiore e tornava a essere completamente trasparente nella parte superiore.

Inserendo questo sopra nell'ordine z, il testo ho ottenuto l'effetto che cercavo. Immagino che potresti ottenere lo stesso tipo di effetto in questo modo

Per vederlo in azione, dai un'occhiata al menu principale della mia app, Claustrophobic.