Enhet 2D ledd Glidebryter, Relativ, Vår og Friksjonsforbindelser

Hva du skal skape

I den forrige opplæringen begynte vi å se på hvordan 2D fysikkleddene fungerer i Unity og hvordan de skal brukes til å oppnå gode effekter (uten å ofre spillytelsen). I den opplæringen dekket vi avstanden, hengslene, målet og faste leddene.

I dag fortsetter vi med å se på glidebryteren, relativ, vår og friksjonsleddene.

Slider Joint

Denne felles tillater et spillobjekt som styres av stiv kroppsfysikk for å glide langs en linje i rommet. Objektet kan bevege seg hvor som helst langs linjen som svar på kollisjoner, krefter eller motorkraft. Derfor vil ditt neste hinder være en bevegelig plattform som beveger seg kontinuerlig mellom to faste punkter.

Opprett en ny tom GameObject, ring den MovingPlatform, og sett Stilling av objektet til (72,36, 1,57, 0). Deretter må du opprette tre forskjellige plattformer. Gå til plattformsmappen og dra tre sprites PLATFORM1Platform6, og Platform12 inn i det MovingPlatform.

Posisjonen av PLATFORM1 bør være (0, -1, 0), mens for Platform6 det er (14, -1, 0), og for Platform12 (20,3, -1, 0). Etter å ha lagt sprites, bør scenariet se slik ut:

Nå som du har alle eiendelene på plass, er det på tide å lage og konfigurere Slider Joint 2D. Å velge Platform6 og legg til en Slider Joint 2D komponent til det. Enhet vil automatisk legge til en RigidBody 2D også. Aktiver Fryse Rotasjon Z også. Velg nå PLATFORM1 og legg til en RigidBody 2D. Aktiver alternativene Er kinematisk og Fryse Rotasjon Z.

Velg nå Platform6, fjern Platformeffekt 2D komponent, og deaktiver alternativet Brukt av EffectorBox Collider 2D komponent.

Feltene som er tilgjengelige i Slider Joint 2D komponent ligner på de du så i Hengsel felles, men med noen semantiske endringer. Fordi skyveleddene går i lineær snarere enn vinkelbevegelse, Motorhastighet måles i enheter per sekund. På samme måte, i stedet for vinkelgrenser, kan du angi oversettelsesgrenser. Oversettelsesgrenser Arbeid på samme måte som vinkelgrenser, bortsett fra at de angir avstanden den stive kroppen kan være fra Tilkoblet anker punkt.

Sving Aktiver kollisjon på, siden du vil at plattformen skal kollidere med de tilkoblede plattformene. Dra PLATFORM1 til Koblet stiv kropp. Sett Tilkoblet anker til (-0,082, -0,0646). Aktiver Bruk motor og sett Motorhastighet til -2.

Hvis du trykker på Spille, Du vil se at midtplattformen nå beveger seg. Men når den har nådd nærmeste plattform, stopper den. For å fikse dette må du legge til MovingPlatform skript til Platform6. Dra Platform12 til Plattform A og PLATFORM1 til feltet Plattform B.


trykk Spille, og bekreft at alt fungerer som forventet. Nå som hindringen er klar, lag en prefab av den og legg den i hindringer mappe.

Relativ Joint

Relativ Joint 2D tillater to spillobjekter kontrollert av stiv kroppsfysikk for å opprettholde en posisjon basert på hverandres plassering. For å implementere denne felles, vil du opprette to plattformer. Den ene er fast i rommet, mens den andre vil bevege seg rundt den, og skape en sirkulær hindring.

Opprett en ny, tom GameObject på Stilling (102,7, 4,2, 0) og nevne det Slektning. Inne i Eiendeler \ GameAssets \ plattformer mappe, dra Platform11 inn i det Slektning GameObject og endre navn til PLATFORM2. Endre dens Stilling til (-.45, -5,97, 0) og Scale til (.5, .5, 1). Legg til en Rigidbody 2D komponent og kontroller Er kinematisk eiendom. Den første delen av hindringen er opprettet, så la oss nå fortsette og legge til den andre plattformen.

Legg til MetalPlatform sprite (inne i Gratis eiendeler \ Sprites mappe) inn i Slektning GameObject, nevner det Plattform, endre Bestille i lag til 2, og sett Stilling til (-.37, 1,23, 0). Legg til to komponenter: a Rigidbody 2D og a Box Collider 2D. Endre Størrelse av Boksekollider 2D til (2,32, 0,55).

Legg nå til en Relativ Joint 2D komponent til Plattform. Inne i Koblet stiv kropp du bør plassere PLATFORM2.

De Max Force Eiendom setter den lineære (rette linjens) forskyvning mellom sammenføyde objekter. En høy verdi (opp til 1000) bruker høy kraft for å opprettholde forskyvningen. De Maks. Dreiemoment setter vinkel (rotasjon) bevegelse mellom sammenføyde objekter. Sett begge verdiene til 200. De Auto Konfigurer Offset bør kontrolleres.

Hvis du kjører spillet ditt, vil du se at ingenting beveger seg. Du må gjøre et siste skritt som innebærer å legge til RelativeJoint (inne i scripts mappe) skript i Plattform GameObject. Spille Spillet og test om alt fungerer som ønsket.

Den endelige felleskonfigurasjonen er:

Nå som hindringen er klar, lag en prefab av det ved å plassere GameObject i hindringer mappe.

Spring Joint

Spring Joint 2D-komponenten tillater to spillobjekter kontrollert av stiv kroppsfysikk å festes sammen som ved en fjær. Våren vil bruke en bestemt kraft langs sin akse mellom de to objektene, forsøker å holde dem en viss avstand fra hverandre.

For å bruke denne felles, vil du opprette en flytende bro sammensatt av skyer; skyene vil bli festet til en annen stor sky ved hjelp av våren felles.

Begynn med å opprette en tom GameObject. Navngi det Vår og sett dens Stilling til (120, 10, 0). Legg til Walkaway1 sprite (inne i Plattform mappe) inn i Vår GameObject. Bytt navn til CloudSpring og Bestille i lag til 1. Legg til en Rigidbody 2D og sjekk Er kinematisk eiendom.

La oss nå legge til fire nye sprites. Velg Platform9 Sprite fra samme mappe og legg fire av dem inn i Vår GameObject. Gi navn til hvert objekt PlatSpring01 til PlatSpring04.

Hver PlatSpring må plasseres i riktig posisjon som følger:

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

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

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

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

Endre Bestille i lag til 4 for alle PlatSpring objekter. Nå, for hver PlatSpring du må legge til to komponenter: a Rigidbody 2D og en Spring Joint 2D. For Rigidbody 2D komponenter, du trenger bare å sjekke Fryse RotasjonZ akser.

Når du legger til Spring Joint 2D, det oppretter som standard a Koblet stiv kropp til scene senter.

Det er ikke den tiltenkte effekten. Derfor bør du legge ved CloudSpring GameObject til Koblet stiv kropp av hver PlatSpring.

Når du gjør det, oppdateres den grønne linjeforbindelsen automatisk og plasseres inne i CloudSpring.

Du kan endre Tilkoblet anker og Avstand hvis du vil. Men i denne opplæringen vil du bare endre Tilkoblet anker.

For hver PlatSpring, endre Tilkoblet anker tilsvarende:

  • PlatSpring01-4,8, 0

  • PlatSpring02: -1,7, 0

  • PlatSpring031,07, -0,11

  • PlatSpring04: 4,13, -0,11

Den komplette konfigurasjonen av PlatSpring01 er følgende:

Spill spillet ditt og test om alt er godt plassert og konfigurert. Nå som hindringen er klar, lag en prefab av det ved å plassere GameObject i hindringer mappe.

Friksjonsfeste

Friksjonsfugen 2D forbinder objekter som styres av stiv kroppsfysikk og reduserer både de lineære og vinkelhastighetene mellom objektene til de når null (dvs. det senker dem ned). For å implementere Friction Joint 2D, vil du opprette en bevegelig plattform som er koblet til en sky med fysiske egenskaper.

Begynn med å opprette en tom GameObject. Navngi det FrictionPlatform og sett dens Stilling til (133, 5, 0). Legg til Platform11 sprite (inne i Eiendeler \ Sprites mappe) inn i FrictionPlatform. Bytt navn til Brukerstøtte og sett Bestill i Layer til 1, det er Stilling til (0, 0, 0), og dets Scale til (.25, .25, 1). Du bør også legge til en Rigidbody 2D og sjekk Er kinematisk eiendom. De resterende egenskapene skal overlates til standardinnstillingene.

Nå legger du til MetalPlatform sprite inn i FrictionPlatform. Endre dens Stilling til (.31, -8,33, 0), og Bestille i lag til 3. Med MetalPlatform valgt, legg til en Rigidbody 2D, en Box Collider 2D, og a Plattform Effector 2D. De Box Collider 2D Størrelse bør justeres til (2,35, 0,5) med Brukt av Effector på, mens i Rigidbody 2D du må sjekke Fryse posisjon Y og Fryse Rotasjon Z. Du bør nå ha noe som følger:

Hvis du spiller spillet og hopper over MetalPlatform, Du vil legge merke til at ingenting beveger seg. La oss endre det ved å legge til en Friksjon Felles 2D inn i det MetalPlatform. De Koblet stiv kropp skal fylles av Brukerstøtte. For dette felles vil vi la Unity sette den beste ankerkoordinatet ved å aktivere Konfigurer automatisk tilkoblet. De Max Force og Maks. Dreiemoment bør være 1, mens Break Force og Bryt dreiemoment bør være evighet.

Kjør spillet ditt og la oss teste friksjonsforbindelsen. Nå som det endelige hinderet er klart, lag en prefab av det og legg det i hindringer mappe.

konklusjoner

Dette avsluttes den andre opplæringsdelen om Unity Joints 2D. Du lærte om fire ledd, nemlig glidebryteren, relativ, vår og friksjonsleddene. Med denne kunnskapen alliert med alt du lærte i første del, er du nå i stand til å lage komplekse 2D-spill ved hjelp av komplekse 2D fysikk egenskaper. 

Hvis du har spørsmål eller kommentarer, kan du som alltid gjerne slippe en linje i kommentarene.