Skip to main content

Applicare un Effetto Glow a uno SKSpriteNode con SpriteKit e Swift

Se avete un progetto SpriteKit e volete applicare un effetto glow a uno SKSpriteNode per creare un alone luminoso intorno alla texture, c’è un modo molto semplice per ottenerlo. Infatti è possibile applicare i filtri forniti da Core Image in SpriteKit utilizzando il nodo SKEffectNode in modo molto semplice.

Ecco come appare il nostro sprite originale.

SKSpriteNode

Create un nuovo file swift ed assegnategli il nome che preferite (ad esempio Extensions.swift) e incollate al suo interno la seguente snipped di codice.

A questo punto non vi rimane che invocare il metodo addGlow() (che ora è disponibile grazie alla extension precedente) in ogni oggetto di tipo SKSpriteNode.

Risultato

Glow SKSpriteNode

 

Come funziona?

Esaminiamo il codice all’interno della extension.

Creiamo uno SKEffectNode e impostiamo la property shouldReasterize = true, in questo modo l’effetto glow verrà salvata in cache e non sarà necessario rigenerarlo ad ogni frame (a meno che il contenuto si SKEffectNode non cambi).

Il nodo SKEffectNode viene aggiunto come figlio dello SKSpriteNode attuale.

Viene creato un nuovo sprite avente la stessa texture dello sprite corrente, e viene aggiunto come figlio di SKEffectNode. Siccome l’effetto che stiamo per definire viene applicato a tutti i figli dello SKEffectNode, questo “duplicato” dello sprite attuale riceverà l’effetto.

Infine creiamo un filtro di Core Image e lo assegniamo allo SKEffectNode. Si tratta dell’effetto blur.

Conclusione

La tecnica che abbiamo appena visto permette di applicare qualsiasi filtro di Core Image (ecco la lista completa) a qualsiasi SKEffectNode di SpriteKit.

Trainer • Developer • Writer

Luca Angeletti

Trainer • Developer • Writer

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *