Unity 2D Joints Slider, Relative, Spring e Friction Joints

Cosa starai creando

Nel tutorial precedente, abbiamo iniziato a esaminare come funzionano le articolazioni fisiche 2D in Unity e come utilizzarle per ottenere effetti straordinari (senza sacrificare le prestazioni del gioco). In quel tutorial, abbiamo coperto la distanza, la cerniera, il bersaglio e le articolazioni fisse.

Oggi continueremo osservando le giunture dei cursori, relativi, primaverili e di attrito.

Slider Joint

Questo giunto consente a un oggetto di gioco controllato dalla fisica del corpo rigido di scorrere lungo una linea nello spazio. L'oggetto può spostarsi ovunque lungo la linea in risposta a collisioni, forze o forza motrice. Pertanto, il tuo prossimo ostacolo sarà una piattaforma mobile che si sposta continuamente tra due punti fissi.

Crea un nuovo GameObject vuoto, chiamalo MovingPlatform, e impostare il Posizione dell'oggetto a (72.36, 1.57, 0). Successivamente, è necessario creare tre diverse piattaforme. Vai alla cartella Piattaforme e trascina tre sprite Platform1Platform6, e Platform12 nel MovingPlatform.

La posizione di Platform1 dovrebbe essere (0, -1, 0), mentre per Platform6 è (14, -1, 0) e per Platform12 (20.3, -1, 0). Dopo aver posizionato gli sprite, lo scenario dovrebbe assomigliare a questo:

Ora che hai tutte le risorse in atto, è il momento di creare e configurare Slider Joint 2D. Selezionare Platform6 e aggiungere un Slider Joint 2D componente ad esso. Unity aggiungerà automaticamente a RigidBody 2D anche. Abilitare Blocca rotazione Z anche. Ora, seleziona Platform1 e aggiungere un RigidBody 2D. Abilita le opzioni È cinematico e Blocca rotazione Z.

Ora, seleziona Platform6, Rimuovi il Platform Effect 2D componente, e disabilitare l'opzione Usato da Effector sul Box Collider 2D componente.

I campi disponibili in Slider Joint 2D i componenti sono simili a quelli che hai visto in Cerniera congiunto, ma con alcune modifiche semantiche. Poiché le articolazioni di scorrimento si occupano del movimento lineare piuttosto che angolare, Velocità del motore è misurato in unità al secondo. Allo stesso modo, invece dei limiti dell'angolo, è possibile specificare i limiti di traduzione. Limiti di traduzione funzionano allo stesso modo dei limiti di angolo, tranne che specificano la distanza che il corpo rigido può avere dal Ancoraggio connesso punto.

turno Abilita collisione on, dal momento che si desidera che la piattaforma entri in collisione con le piattaforme connesse. Trascinare Platform1 al Corpo rigido connesso. Impostare il Ancoraggio connesso a (-0.082, -0.0646). Abilitare Usa motore e impostare il Velocità del motore a -2.

Se si preme Giocare, vedrai che la piattaforma centrale si sta muovendo. Tuttavia, una volta raggiunta la piattaforma più vicina, si ferma. Per risolvere questo problema, dovrai aggiungere il MovingPlatform script per Platform6. Trascinare Platform12 a Piattaforma APlatform1 al campo Piattaforma B.


stampa Giocare, e verificare che tutto funzioni come previsto. Ora che l'ostacolo è pronto, creane un prefabbricato e inseriscilo nel ostacoli cartella.

Giunto relativo

Il giunto 2D relativo consente a due oggetti di gioco controllati dalla fisica del corpo rigido di mantenere una posizione basata sulla posizione dell'altro. Per implementare questo comune, creerai due piattaforme. Uno è fissato nello spazio, mentre l'altro si muoverà attorno ad esso creando un ostacolo circolare.

Crea un nuovo GameObject vuoto al Posizione (102,7, 4,2, 0) e nominalo Parente. Dentro il Attivo \ GameAssets \ Piattaforme cartella, trascinare Platform11 nel Parente GameObject e cambia il suo nome in Platform2. Cambialo Posizione a (-.45, -5,97, 0) e il Scala a (.5, .5, 1). Aggiungere un Rigidbody 2D componente e controllare il È cinematico proprietà. Viene creata la prima parte dell'ostacolo, quindi procediamo e aggiungiamo la seconda piattaforma.

Aggiungi il MetalPlatform sprite (dentro il Risorse gratuite \ Sprites cartella) nel Parente GameObject, nominalo piattaforma, cambiare il Ordine nel livello a 2, e impostare il Posizione a (-.37, 1,23, 0). Aggiungi due componenti: a Rigidbody 2D e a Box Collider 2D. Cambiare il Taglia del Box collider 2D a (2,32, 0,55).

Ora aggiungi un Giunto relativo 2D componente al piattaforma. Dentro il Corpo rigido connesso dovresti piazzare Platform2.

Il Forza massima la proprietà imposta l'offset lineare (linea retta) tra gli oggetti uniti: un valore elevato (fino a 1.000) utilizza una forza elevata per mantenere l'offset. Il Coppia massima imposta il movimento angolare (rotazione) tra gli oggetti uniti. Imposta entrambi i valori su 200. Il Auto Configura Offset dovrebbe essere controllato.

Se esegui il tuo gioco, vedrai che nulla si muove. È necessario eseguire un passaggio finale che comporta l'aggiunta del RelativeJoint (dentro il Script cartella) nello piattaforma GameObject. Giocare il gioco e prova se tutto funziona come previsto.

La configurazione finale del giunto è:

Ora che l'ostacolo è pronto, creane una prefabbricata posizionando il GameObject nel ostacoli cartella.

Giunto a molla

Il componente 2D Joint Spring consente a due oggetti di gioco controllati dalla fisica del corpo rigido di essere collegati insieme come da una molla. La molla applicherà una forza specifica lungo il suo asse tra i due oggetti, tentando di mantenerli a una certa distanza.

Per utilizzare questo giunto, creerai un ponte galleggiante composto da nuvole; le nuvole saranno attaccate a un'altra grande nuvola usando il giunto a molla.

Inizia creando un GameObject vuoto. Nominalo Primavera e impostare il suo Posizione a (120, 10, 0). Aggiungi il Walkaway1 sprite (dentro il piattaforma cartella) nel Primavera GameObject. Cambia il suo nome in CloudSpring e il Ordine nel livello a 1. Aggiungere un Rigidbody 2D e controllare il È cinematico proprietà.

Ora aggiungiamo quattro nuovi sprite. Seleziona il Platform9 sprite dalla stessa cartella e aggiungerne quattro nel Primavera GameObject. Nomina ogni oggetto PlatSpring01 a PlatSpring04.

Ogni PlatSpring deve essere posizionata nella posizione corretta come segue:

  • PlatSpring01: -7,63, -12,35, 0

  • PlatSpring02: -2,67, -11,16, 0

  • PlatSpring03: 1,88, -12,44, 0

  • PlatSpring04: 6.77, -12.58, 0

Cambiare il Ordine nel livello a 4 per tutti PlatSpring oggetti. Ora, per ciascuno PlatSpring è necessario aggiungere due componenti: a Rigidbody 2D e uno Giunto a molla 2D. Per il Rigidbody 2D componenti, hai solo bisogno di controllare il Rotazione del congelamento sul Z asse.

Quando aggiungi il Giunto a molla 2D, crea di default a Corpo rigido connesso al Scena centro.

Questo non è l'effetto desiderato. Pertanto, dovresti allegare il CloudSpring GameObject al Corpo rigido connesso di ciascuna PlatSpring.

Quando lo fai, la connessione della linea verde viene automaticamente aggiornata e posizionata all'interno di CloudSpring.

Puoi cambiare il Ancoraggio connesso e il Distanza se vuoi. Tuttavia, in questo tutorial cambierai solo il Ancoraggio connesso.

Per ciascuno PlatSpring, cambiare il Ancoraggio connesso di conseguenza:

  • PlatSpring01-4,8, 0

  • PlatSpring02: -1,7, 0

  • PlatSpring031.07, -0.11

  • PlatSpring04: 4.13, -0.11

La configurazione completa di PlatSpring01 è il seguente:

Gioca al tuo gioco e verifica se tutto è ben posizionato e configurato. Ora che l'ostacolo è pronto, creane una prefabbricata posizionando il GameObject nel ostacoli cartella.

Giunto di attrito

Il giunto a frizione 2D collega oggetti controllati dalla fisica del corpo rigido e riduce sia la velocità lineare che quella angolare tra gli oggetti fino a raggiungere lo zero (cioè li rallenta). Per implementare Friction Joint 2D, creerai una piattaforma mobile connessa a una nuvola con proprietà fisiche.

Inizia creando un GameObject vuoto. Nominalo FrictionPlatform e impostare il suo Posizione a (133, 5, 0). Aggiungi il Platform11 sprite (dentro il Attivo \ Sprites cartella) nel FrictionPlatform. Cambia il suo nome in Supporto e impostare il Ordina in Layer a 1, suo Posizione a (0, 0, 0), e la sua Scala a (.25, .25, 1). Dovresti anche aggiungere un Rigidbody 2D e controllare il È cinematico proprietà. Le proprietà rimanenti dovrebbero essere lasciate ai valori predefiniti.

Ora, aggiungi il MetalPlatform sprite nel FrictionPlatform. Cambialo Posizione a (.31, -8,33, 0), e il Ordine nel livello a 3. Con il MetalPlatform selezionato, aggiungi a Rigidbody 2D, un Box Collider 2D, e a Platform Effector 2D. Il Box Collider 2D Taglia dovrebbe essere adattato a (2,35, 0,5) con Usato da Effector su, mentre nel Rigidbody 2D è necessario controllare il Posizione congelata Y e il Blocca rotazione Z. Ora dovresti avere qualcosa di simile al seguente:

Se giochi e salta sopra MetalPlatform, noterai che nulla si muove. Cambiamo ciò aggiungendo a Articolazione a frizione 2D nel MetalPlatform. Il Corpo rigido connesso dovrebbe essere compilato dal Supporto. Per questo comune, consentiremo a Unity di impostare la migliore coordinata di ancoraggio abilitando Auto Configure Connected. Il Forza massima e Coppia massima dovrebbe essere 1, mentre il Break Force e Rompere coppia dovrebbe essere Infinito.

Esegui il tuo gioco e testiamo il giunto di attrito. Ora che l'ostacolo finale è pronto, creane un prefabbricato e inseriscilo nel ostacoli cartella.

conclusioni

Questo conclude la seconda parte del tutorial su Unity Joints 2D. Hai imparato a conoscere quattro giunti, ovvero le giunture di scorrimento, relative, primaverili e di attrito. Con questa conoscenza unita a tutto ciò che hai imparato nella prima parte, ora sei in grado di creare giochi 2D complessi usando proprietà fisiche 2D complesse. 

Se avete domande o commenti, come sempre, sentitevi liberi di inserire una riga nei commenti.