Unity 2D-verbindingen schuif, relatieve, veer- en wrijvingsverbindingen

Wat je gaat creëren

In de vorige tutorial zijn we gaan kijken naar de manier waarop 2D-physics-verbindingen werken in Unity en hoe je ze kunt gebruiken om geweldige effecten te bereiken (zonder de spelprestaties te moeten opofferen). In die zelfstudie hebben we de afstand, scharnier, doel en vaste verbindingen behandeld.

Vandaag gaan we verder met het bekijken van de schuif, relatieve, veer en wrijvingsverbindingen.

Schuifverbinding

Met deze verbinding kan een spelobject dat wordt bestuurd door de fysica van het starre lichaam langs een lijn in de ruimte schuiven. Het object kan overal langs de lijn bewegen als reactie op botsingen, krachten of door een motorische kracht. Daarom is je volgende obstakel een bewegend platform dat continu tussen twee vaste punten beweegt.

Maak een nieuw leeg GameObject, noem het MovingPlatform, en stel de Positie van het object naar (72,36, 1,57, 0). Vervolgens moet u drie verschillende platforms maken. Ga naar de map Platforms en sleep drie sprites PLATFORM1Platform6, en Platform12 in de MovingPlatform.

De positie van PLATFORM1 zou moeten zijn (0, -1, 0), terwijl voor Platform6 het is (14, -1, 0) en voor Platform12 (20,3, -1, 0). Na het plaatsen van de sprites, zou je scenario er als volgt uit moeten zien:

Nu u alle assets op zijn plaats hebt, is het tijd om de Slider Joint 2D te maken en configureren. kiezen Platform6 en voeg een toe Schuifkoppelstuk 2D component ervan. Unity voegt automatisch een toe RigidBody 2D ook. in staat stellen Rotatie bevriezen Z ook. Selecteer nu PLATFORM1 en voeg een toe RigidBody 2D. Schakel de opties in Is Kinematic en Rotatie bevriezen Z.

Selecteer nu Platform6, Verwijder de Platform Effect 2D component en schakel de optie uit Gebruikt door Effector op de Box Collider 2D bestanddeel.

De velden beschikbaar in de Schuifkoppelstuk 2D component zijn vergelijkbaar met degene die u in de Scharnier gewricht, maar met een paar semantische veranderingen. Omdat schuifkoppelingen overwegend in lineaire in plaats van hoekbeweging handelen, Motorsnelheid wordt gemeten in eenheden per seconde. In plaats van hoeklimieten kunt u ook vertaallimieten opgeven. Vertaalgrenzen werk op dezelfde manier als hoeklimieten, behalve dat ze de afstand aangeven die het stijve lichaam van de. kan zijn Verbonden anker punt.

Beurt Botsing inschakelen op, omdat u wilt dat het platform botst met de verbonden platforms. Slepen PLATFORM1 naar de Verbonden onbuigzaam lichaam. Stel de Verbonden anker tot (-0.082, -0.0646). in staat stellen Gebruik Motor en stel de Motorsnelheid naar -2.

Als u op drukt Spelen, je zult zien dat het middelste platform nu in beweging is. Zodra het het dichtstbijzijnde platform heeft bereikt, stopt het echter. Om dit op te lossen, moet u de MovingPlatform script naar Platform6. Slepen Platform12 naar Platform A en PLATFORM1 naar het veld Platform B.


druk op Spelen, en controleer of alles werkt zoals verwacht. Nu het obstakel gereed is, maakt u er een prefab van en plaatst u deze in de obstakels map.

Relatieve verbinding

Met Relatieve gezamenlijke 2D kunnen twee game-objecten die worden beheerd door de fysica van het rigide lichaam, een positie behouden op basis van elkaars locatie. Om deze joint te implementeren, maakt u twee platforms. De ene is gefixeerd in de ruimte, terwijl de andere zich eromheen beweegt en een cirkelvormig obstakel vormt.

Maak een nieuw leeg GameObject op de Positie (102,7, 4,2, 0) en noem het Familielid. Binnen in de Activa \ GameAssets \ Platforms map, slepen Platform11 in de Familielid GameObject en verander de naam in PLATFORM2. Verander zijn Positie naar (-.45, -5.97, 0) en de Schaal naar (.5, .5, 1). Voeg een ... toe Rigidbody 2D component en controleer de Is Kinematic eigendom. Het eerste deel van het obstakel is gemaakt, dus laten we nu verdergaan en het tweede platform toevoegen.

Voeg de toe MetalPlatform sprite (binnen de Gratis activa \ Sprites map) in de Familielid GameObject, noem maar op Platform, verander de Bestel in laag naar 2, en stel de Positie naar (-.37, 1,23, 0). Voeg twee componenten toe: a Rigidbody 2D en een Box Collider 2D. Verander de Grootte van de Box-collider 2D naar (2,32, 0,55).

Voeg nu een toe Relatieve gezamenlijke 2D component van de Platform. Binnen in de Verbonden onbuigzaam lichaam je zou moeten plaatsen PLATFORM2.

De Max Force property stelt de lineaire (rechte lijn) offset in tussen gekoppelde objecten - een hoge waarde (van maximaal 1000) gebruikt hoge kracht om de offset te behouden. De Maximumkoppel stelt de hoekige (rotatie) beweging tussen gekoppelde objecten in. Stel beide waarden in op 200. De Auto Offset configureren moet worden gecontroleerd.

Als je je spel uitvoert, zul je zien dat er niets beweegt. Je moet een laatste stap zetten waarbij je de RelativeJoint (binnen in de scripts map) script in de Platform GameObject. Spelen het spel en test of alles werkt zoals bedoeld.

De uiteindelijke gezamenlijke configuratie is:

Nu het obstakel gereed is, maakt u er een prefab van door het GameObject in de. Te plaatsen obstakels map.

Spring Joint

Met de verenkoppeling in 2D-component kunnen twee game-objecten die worden bestuurd door de fysica van het rigide lichaam aan elkaar worden bevestigd alsof ze door een veer worden bevestigd. De veer zal een specifieke kracht langs de as tussen de twee objecten uitoefenen, waarbij wordt geprobeerd deze op een bepaalde afstand van elkaar te houden.

Om deze verbinding te gebruiken, creëer je een drijvende brug samengesteld door wolken; de wolken worden bevestigd aan een andere grote wolk met behulp van de veerverbinding.

Begin met het maken van een leeg GameObject. Noem maar op De lente en stel zijn Positie naar (120, 10, 0). Voeg de toe Walkaway1 sprite (binnen de Platform map) in de De lente GameObject. Verander de naam in CloudSpring en de Bestel in laag naar 1. Voeg een ... toe Rigidbody 2D en controleer de Is Kinematic eigendom.

Laten we nu vier nieuwe sprites toevoegen. Selecteer de Platform9 sprite uit dezelfde map en voeg er vier toe aan de map De lente GameObject. Geef elk object een naam PlatSpring01 naar PlatSpring04.

Elke PlatSpring moet als volgt in de juiste positie worden geplaatst:

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

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

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

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

Verander de Bestel in laag naar 4 voor iedereen PlatSpring voorwerpen. Nu voor elk PlatSpring je moet twee componenten toevoegen: Rigidbody 2D en een Veerverbinding 2D. Voor de Rigidbody 2D componenten, hoeft u alleen de Rotatie bevriezen op de Z as.

Wanneer u de Veerverbinding 2D, het maakt standaard een Verbonden onbuigzaam lichaam naar de Tafereel centrum.

Dat is niet het bedoelde effect. Daarom moet u de CloudSpring GameObject voor de Verbonden onbuigzaam lichaam van elke PlatSpring.

Wanneer u dat doet, wordt de groene lijnverbinding automatisch bijgewerkt en in de CloudSpring.

U kunt de Verbonden anker en de Afstand als je wilt. In deze zelfstudie wijzigt u echter alleen het Verbonden anker.

Voor elk PlatSpring, verander de Verbonden anker overeenkomstig:

  • PlatSpring01-4,8, 0

  • PlatSpring02: -1.7, 0

  • PlatSpring031.07, -0.11

  • PlatSpring04: 4.13, -0.11

De volledige configuratie van PlatSpring01 is de volgende:

Speel je spel en test of alles goed is geplaatst en geconfigureerd. Nu het obstakel gereed is, maakt u er een prefab van door het GameObject in de. Te plaatsen obstakels map.

Wrijvingsverbinding

De Friction Joint 2D verbindt objecten die worden aangestuurd door de fysica van het starre lichaam en vermindert zowel de lineaire als de hoeksnelheden tussen de objecten totdat ze nul bereiken (dat wil zeggen dat ze langzamer werken). Om de Friction Joint 2D te implementeren, maakt u een bewegend platform dat is verbonden met een cloud met fysieke eigenschappen.

Begin met het maken van een leeg GameObject. Noem maar op FrictionPlatform en stel zijn Positie naar (133, 5, 0). Voeg de toe Platform11 sprite (binnen de Activa \ Sprites map) in de FrictionPlatform. Verander de naam in Ondersteuning en stel de Bestel in Layer aan 1, haar Positie naar (0, 0, 0), en zijn Schaal naar (.25, .25, 1). Je moet ook een toevoegen Rigidbody 2D en controleer de Is Kinematic eigendom. De resterende eigenschappen moeten worden overgelaten aan de standaardwaarden.

Voeg nu de MetalPlatform sprite in de FrictionPlatform. Verander zijn Positie naar (.31, -8,33, 0), en de Bestel in laag naar 3. Met de MetalPlatform geselecteerd, voeg een toe Rigidbody 2D, een Box Collider 2D, en een Platform Effector 2D. De Box Collider 2D Grootte moet worden aangepast aan (2,35, 0,5) met Gebruikt door Effector aan, terwijl in de Rigidbody 2D je moet de Positie Y bevriezen en de Rotatie bevriezen Z. Je zou nu ongeveer het volgende moeten hebben:

Als je het spel speelt en over de. Springt MetalPlatform, je zult merken dat er niets beweegt. Laten we dat veranderen door een Wrijvingsvoeg 2D in de MetalPlatform. De Verbonden onbuigzaam lichaam moet worden ingevuld door de Ondersteuning. Voor deze joint laten we Unity de beste ankercoördinaten instellen door in te schakelen Automatisch Verbonden configureren. De Max Force en Maximumkoppel zou moeten zijn 1, Terwijl de Break Force en Break Torque zou moeten zijn Oneindigheid.

Run je spel en laten we de wrijvingsverbinding testen. Nu het laatste obstakel gereed is, maakt u een prefab ervan en plaatst u deze in de obstakels map.

conclusies

Hiermee is het tweede zelfstudiedeel over Unity Joints 2D voltooid. Je hoorde over vier gewrichten, namelijk de schuif, relatieve, veer en wrijvingsverbindingen. Met deze kennis verbonden met alles wat je in het eerste deel hebt geleerd, kun je nu complexe 2D-games maken met behulp van complexe 2D-fysica-eigenschappen. 

Als u vragen of opmerkingen heeft, kunt u zoals altijd een regel in de opmerkingen plaatsen.