Unități de îmbinare 2D articulație, articulație relativă, arc și fricțiune

Ce veți crea

În tutorialul anterior, am început să ne uităm la modul în care îmbinările fizice 2D lucrează în unitate și cum să le folosiți pentru a obține efecte extraordinare (fără a sacrifica performanța jocului). În acest tutorial am acoperit distanța, balama, țintă și articulații fixe.

Astăzi, vom continua să ne uităm la glisorul, rularea, primăvara și articulațiile de frecare.

Glisor articulat

Această îmbinare permite unui obiect de joc controlat de fizica rigidă a corpului să alunece de-a lungul unei linii în spațiu. Obiectul se poate deplasa oriunde de-a lungul liniei ca răspuns la coliziuni, forțe sau prin forța motorului. Prin urmare, următorul obstacol va fi o platformă în mișcare care se mișcă continuu între două puncte fixe.

Creați un nou joc gol GameObject, sunați-l MovingPlatform, și setați Poziţie al obiectului la (72,36, 1,57,0). Apoi, trebuie să creați trei platforme diferite. Accesați dosarul Platforme și trageți trei sprite PLATFORM1Platform6, și Platform12 în MovingPlatform.

Poziția PLATFORM1 ar trebui să fie (0, -1, 0), în timp ce pentru Platform6 este (14, -1, 0) și pentru Platform12 (20,3, -1, 0). După ce plasați spritele, scenariul dvs. ar trebui să arate astfel:

Acum, că aveți toate bunurile în loc, este timpul să creați și să configurați comunitatea 2D. Selectați Platform6 și adăugați a Dispozitiv de articulație 2D componentă a acesteia. Unitatea va adăuga automat a RigidBody 2D de asemenea. Permite Freeze Rotation Z de asemenea. Acum, selectați PLATFORM1 și adăugați a RigidBody 2D. Activați opțiunile Este cinematică și Freeze Rotation Z.

Acum, selectați Platform6, eliminați Efectul platformei 2D componentă și dezactivați opțiunea Folosit de Effector pe Box Collider 2D component.

Câmpurile disponibile în Dispozitiv de articulație 2D componenta sunt similare cu cele pe care le-ați văzut în Balama comun, dar cu câteva schimbări semantice. Deoarece articulațiile culisează în mișcare liniară, mai degrabă decât angulară, Viteza motorului este măsurat în unități pe secundă. De asemenea, în locul limitelor de unghi, puteți specifica limite de traducere. Limite de traducere lucrați în același mod ca și limitele unghiului, cu excepția faptului că specifică distanța pe care corpul rigid poate fi de la distanța Ancoră conectată punct.

viraj Activați coliziunea pe, deoarece doriți ca platforma să se ciocnească cu platformele conectate. Trage PLATFORM1 la Conectat corp rigid. Seteaza Ancoră conectată la (-0,082, -0,0646). Permite Utilizați motorul și setați Viteza motorului la -2.

Dacă apăsați Joaca, veți vedea că platforma de mijloc se mișcă acum. Cu toate acestea, odată ce a ajuns la cea mai apropiată platformă, se oprește. Pentru a rezolva acest lucru, va trebui să adăugați MovingPlatform script la Platform6. Trage Platform12 la Platforma A și PLATFORM1 la câmp Platforma B.


presa Joaca, și verificați dacă totul funcționează conform așteptărilor. Acum, că obstacolul este gata, creați un prefab al acestuia și plasați-l în obstacole pliant.

Relativă

2D relativă permite două obiecte de joc controlate de fizica rigidă a corpului pentru a menține o poziție bazată pe locația celeilalte. Pentru a pune în aplicare această comună, veți crea două platforme. Unul este fixat în spațiu, în timp ce celălalt se va deplasa în jurul acestuia, creând un obstacol circular.

Creați un nou GameObject gol la Poziţie (102,7, 4,2, 0) și denumiți-o rudă. În interiorul Active \ GameAssets \ Platforme dosar, trageți Platform11 în rudă GameObject și schimbați numele acesteia PLATFORM2. Schimbă-l Poziţie la (-.45, -5,97, 0) si Scară la (.5, 5, 1). Adauga o Corpul rigid 2D și verificați Este cinematică proprietate. Prima parte a obstacolului este creată, deci hai să continuăm și să adăugăm a doua platformă.

Adaugă MetalPlatform sprite (în interiorul Gratuit Assets \ Sprites folder) în rudă GameObject, denumiți-o Platformă, schimba Comandați în Layer la 2, și setați Poziţie la (-.37, 1,23, 0). Adăugați două componente: a Corpul rigid 2D și a Box Collider 2D. Schimba mărimea din Cutie de coliziune 2D la (2,32, 0,55).

Acum adaugati a 2D relativă componenta la Platformă. În interiorul Conectat corp rigid ar trebui sa plasezi PLATFORM2.

Max Force proprietatea stabilește decalajul liniar (linie dreaptă) între obiectele asamblate - o valoare mare (de până la 1.000) folosește forța mare pentru a menține offsetul. Max Torque stabilește mișcarea unghiulară (rotație) între obiectele asamblate. Setați ambele valori la 200. Configurare automată a offsetului ar trebui să fie verificate.

Dacă îți conduci jocul, vei vedea că nimic nu se mișcă. Trebuie să faceți un pas final care implică adăugarea RelativeJoint (în interiorul Scripturi folder) în scriptul Platformă GameObject. Joaca jocul și testați dacă totul funcționează conform destinației.

Configurația finală comună este:

Acum, că obstacolul este gata, creați un prefab al acestuia prin plasarea GameObject în obstacole pliant.

Arc de legătură

Componenta 2D de primăvară permite două obiecte de joc controlate de fizica rigidă a corpului să fie atașate împreună ca și cum ar fi prin intermediul unui arc. Arcul va aplica o forță specifică de-a lungul axei sale între cele două obiecte, încercând să le mențină la o anumită distanță.

Pentru a utiliza această îmbinare, veți crea un pod plutitor compus din nori; norii vor fi atașați la un alt nor mare utilizând articulația de primăvară.

Începeți prin crearea unui GameObject gol. Numeste Primăvară și setați-o Poziţie la (120, 10, 0). Adaugă Walkaway1 sprite (în interiorul Platformă folder) în Primăvară GameObject. Schimbați numele în CloudSpring si Comandați în Layer la 1. Adauga o Corpul rigid 2D și verificați Este cinematică proprietate.

Acum, să adăugăm patru sprites noi. Selectează Platform9 sprite din același dosar și adăugați patru din ele în Primăvară GameObject. Denumiți fiecare obiect PlatSpring01 la PlatSpring04.

Fiecare PlatSpring trebuie plasat în poziția corectă după cum urmează:

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

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

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

  • PlatSpring04: 6,77, -12,58, 0

Schimba Comandați în Layer la 4 pentru toți PlatSpring obiecte. Acum, pentru fiecare PlatSpring trebuie să adăugați două componente: a Corpul rigid 2D și unul Arc 2D. Pentru Corpul rigid 2D componente, trebuie doar să verificați Freeze Rotation pe Z axă.

Când adăugați Arc 2D, creează în mod implicit o Conectat corp rigid la Scenă centru.

Asta nu este efectul dorit. Prin urmare, ar trebui să atașați CloudSpring GameObject la Conectat corp rigid de fiecare PlatSpring.

Când faceți acest lucru, conexiunea liniei verzi este actualizată automat și plasată în interiorul CloudSpring.

Puteți modifica Ancoră conectată si Distanţă daca vrei. Cu toate acestea, în acest tutorial veți schimba doar Ancoră conectată.

Pentru fiecare PlatSpring, schimba Ancoră conectată în consecinţă:

  • PlatSpring01-4,8, 0

  • PlatSpring02: -1,7, 0

  • PlatSpring031,07, -0,11

  • PlatSpring04: 4,13, -0,11

Configurația completă a PlatSpring01 este următorul:

Redați jocul și testați dacă totul este bine plasat și configurat. Acum, că obstacolul este gata, creați un prefab al acestuia prin plasarea GameObject în obstacole pliant.

Friction Joint

Articulația de fricțiune 2D conectează obiectele controlate de fizica rigidă a corpului și reduce atât viteza liniară cât și cea angulară dintre obiecte până când ajung la zero (adică încetinește). Pentru a implementa Joint Friction 2D, veți crea o platformă în mișcare care este conectată la un nor cu proprietăți fizice.

Începeți prin crearea unui GameObject gol. Numeste FrictionPlatform și setați-o Poziţie la (133, 5, 0). Adaugă Platform11 sprite (în interiorul Active \ Sprites folder) în FrictionPlatform. Schimbați numele în A sustine și setați Ordine în Layer la 1, este Poziţie la (0, 0, 0), si este Scară la (.25, 25, 1). Ar trebui să adăugați și a Corpul rigid 2D și verificați Este cinematică proprietate. Proprietățile rămase ar trebui lăsate la valorile implicite.

Acum, adăugați MetalPlatform sprite în FrictionPlatform. Schimbă-l Poziţie la (.31, -8,33, 0), si Comandați în Layer la 3. Cu MetalPlatform selectați, adăugați a Corpul rigid 2D, A Box Collider 2D, și a Platform Effector 2D. Box Collider 2D mărimea ar trebui ajustat la (2,35, 0,5) cu Folosit de Effector pe, în timp ce în Corpul rigid 2D trebuie să verificați Poziția de blocare Y si Freeze Rotation Z. Acum ar trebui să aveți ceva de genul:

Dacă joci jocul și sari peste MetalPlatform, veți observa că nimic nu se mișcă. Să schimbăm asta prin adăugarea unui Fricțiune 2D în MetalPlatform. Conectat corp rigid ar trebui să fie completate de A sustine. Pentru această comună, vom lăsa Unitatea să stabilească cea mai bună coordonată de ancorare, permițând Configurare automată conectată. Max Force și Max Torque ar trebui să fie 1, in timp ce Forța de întrerupere și Opriți cuplul ar trebui să fie Infinit.

Rulați jocul și examinați articulația de frecare. Acum, că ultimul obstacol este gata, creați un prefab al acestuia și plasați-l în obstacole pliant.

concluzii

Aceasta incheie a doua parte tutorial despre Unity Joints 2D. Ați învățat despre patru articulații, și anume articulația, raza, arcul și articulațiile de frecare. Cu aceste cunoștințe asociate cu tot ceea ce ați învățat în prima parte, acum puteți să creați jocuri complexe 2D folosind proprietăți fizice complexe 2D. 

Dacă aveți întrebări sau comentarii, ca întotdeauna, nu ezitați să renunțați la un comentariu.