Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Effector, AreaPoint e Platform Surface

I componenti fisici messi a disposizione da Unity5, che permettono un controllo completo sulla fisica 2D del gioco
I componenti fisici messi a disposizione da Unity5, che permettono un controllo completo sulla fisica 2D del gioco
Link copiato negli appunti

In questa lezione vediamo alcuni nuovi componenti fisici messi a disposizione in Unity5, che ci permetteranno un controllo completo sulla fisica 2D del gioco.

Gli Effector

Gli Effector sono una nuova classe di componenti fisici introdotti in Unity5, usati per applicare un effetto specifico (vedi dettagli sotto).

Tutti gli Effector si appoggiano ad un Collider per determinare l'area in cui questo dato effetto viene applicato. Se un Effector viene applicato ad un oggetto senza abilitare sul Collider Used By Effector, Unity presenta un warning:

Nota: al contrario di altri componenti fondamentali come Collider o Rigidbody, gli Effector non fanno niente che non si potrebbe realizzare scrivendo a mano un componente in programmazione. Tuttavia, sono componenti robusti e ne consiglio l'utilizzo se l'effetto desiderato è esattamente quello che l'Effector produce. Se invece volete qualcosa di più particolare… vi toccherà mettere mano al C#.

Area Effector 2D e Point Effector 2D

Questi due semplici Effector applicano una forza ai corpi che entrano in collisione con essi. Sono, essenzialmente, i classici campi di forza usati in giochi che fanno delle simulazioni fisiche il loro punto forte. Per questo motivo, il collider associato è di tipo Trigger, in modo che i corpi possano entrare nell'area d'effetto e subire la forza in maniera continuativa. Alternativamente, se il collider non è un Trigger gli altri corpi verranno influenzati dall'effetto solo nell'istante della collisione con l'Effector.

L'Area Effector 2D presenta queste caratteristiche:

Use Collider Mask e Collider Mask permettono di definire una maschera di collisione personalizzata per questo Effector. In pratica, possiamo sovrascrivere la maschera contenuta in Edit > Project Settings > Physics2D, e definire cosa viene influenzato da questo campo di forza.

Force Angle indica l'angolo della forza applicata, dove 0 è a destra (asse X positivo), mentre 90 è verso l'alto. Force Magnitude e Force Variation permettono di definire la magnitudine della forza e di applicarle una variazione casuale nel tempo (una sorta di turbolenza), mentre Drag ed Angular Drag permettono di creare un Effector che non solo applica una forza, ma che può effettivamente frenare gli oggetti riducendone la velocità o la rotazione.

Vediamo l'Effector in movimento. Posizioniamo un semplice Sprite di un vermetto - a cui è stato applicato un Polygon Collider 2D (vedi lezione precedente) ed un Rigidbody 2D (con gravità attiva!). Creiamo uno Sprite a cui assegniamo un Area Effector 2D (configurato come in figura sopra) ed un Box Collider 2D di tipo Trigger. Premiamo Play:

Il verme cade ed entra nell'area del Trigger. Mentre è dentro viene influenzato dall'Effector, ricevendo una spinta verso l'alto e leggermente verso destra (l'angolo è 89°), fino a cadere.

Da notare che in questo caso l'Effector ha l'ultima opzione Force Target impostata su Collider. Questo fa sì che l'effetto venga applicato al collider invece che al rigidbody, e visto che il collider ha forma irregolare (è un Polygon Collider 2D), il verme riceve una spinta irregolare e tende a ruotare leggermente.

In questo modo possiamo ad esempio creare una zona d'acqua, in cui il verme sembra galleggiare. Se regoliamo bene Force Magnitude, possiamo creare una sorta di “spinta d'Archimede”: se posizioniamo il verme sul fondo, questi inizierà a salire fluttuando fino a raggiungere la superficie, iniziando a galleggiare.

Vediamo ora il Point Effector 2D. In questo caso, la forza applicata non ha un angolo ma è diretta verso il centro dell'oggetto. Senza indugiare sulle singole opzioni (che sono simili a quelle dell'Area Effector 2D ed abbastanza autoesplicative), vediamolo in azione con un setup simile a quello di prima:

Come si può vedere, il vermetto cade e viene “catturato” dall'Effector, che lo attira verso il suo centro. Inoltre, poiché l'Effector ha un drag settato su 0.5, nel tempo il verme “balla” sempre meno, avvicinandosi sempre più al centro.

Da notare però che a discapito del drag il verme non rimarrà mai completamente fermo, perché il movimento sarà sempre un risultato della battaglia fra la forza di gravità e l'Effector che cerca di tirarlo su (da lì viene la vibrazione che si vede a fine animazione).

Platform Effector 2D

Diversamente dagli altri due Effector, Platform Effector e Surface Effector hanno lo scopo di rendere più ricchi ed interessanti i giochi platform, e sono stati pensati per essere usati con Collider tangibili (non Trigger).

Il Platform Effector permette la creazione facile di piattaforme che possono essere attraversate solo da un lato, per creare il classico effetto di una piattaforma su cui si può saltare anche dal basso. Vediamolo in movimento:

In questo esempio, allo Sprite in alto è stato applicato un Platform Effector 2D (mentre il vermetto salta grazie ad un Area Effector 2D, ma questo ci interessa poco). Come si può vedere, il verme trapassa la piattaforma invece di collidervi, ma quando ci si trova sopra, ci si appoggia come se fosse tangibile.

Ecco com'è configurato il componente:

In questo specifico scenario, il parametro Use One Way è quello che produce l'effetto descritto sopra. Disabilitandolo, il verme collide anche con la parte bassa della piattaforma e non l'attraversa.

Perché disabilitarlo? Perché il Platform Effector 2D può essere usato per una miriade di scopi. In generale, il parametro Surface Arc (qui a 180) definisce l'angolo massimo per il quale un altro corpo viene considerato come proveniente “dall'alto” (è questo infatti il caso del verme di cui sopra che, cadendo, sta urtando la piattaforma dall'alto).

Questa definizione di cosa è sopra o sotto viene usata con i parametri Use Side Friction e Use Side Bounce, che permettono di non usare frizione o rimbalzo se un oggetto è a contatto con l'Effector e si sta muovendo verso destra o sinistra.

In ultimo, il Surface Effector permette di applicare una forza continua ad un corpo che si trovi a contatto con la sua superficie. Essenzialmente fa lo stesso lavoro dell'Area Effector, ma invece di essere un'area è un perimetro (infatti è stato pensato per usare Collider non Trigger).

Ecco l'effetto che fa (l'Effector è stato assegnato ai tre blocchi in basso, con una leggera forza verso destra):

In conclusione, un buon uso degli Effector, magari con un po' di fantasia, può permettere la creazione di una miriade di effetti interessanti.

Ti consigliamo anche