In dem vorherigen Tutorial haben wir uns mit der Funktionsweise von 2D-Physikverbindungen in Unity beschäftigt und wie Sie sie verwenden können, um großartige Effekte zu erzielen (ohne die Leistung des Spiels zu beeinträchtigen). In diesem Tutorial haben wir die Entfernung, das Gelenk, das Ziel und die festen Gelenke behandelt.
Heute schauen wir uns die Schieber-, Relativ-, Feder- und Reibungsverbindungen an.
Dieses Gelenk erlaubt es einem Spielobjekt, das von der Starrkörperphysik gesteuert wird, entlang einer Linie im Raum zu gleiten. Das Objekt kann sich als Reaktion auf Kollisionen, Kräfte oder durch eine Motorkraft entlang der Linie bewegen. Ihr nächstes Hindernis wird daher eine sich bewegende Plattform sein, die sich kontinuierlich zwischen zwei festen Punkten bewegt.
Erstellen Sie ein neues leeres GameObject, nennen Sie es MovingPlatform, und setze das Position des Objekts zu (72,36, 1,57, 0). Als Nächstes müssen Sie drei verschiedene Plattformen erstellen. Gehen Sie zum Platforms-Ordner und ziehen Sie drei Sprites Plattform1, Platform6, und Plattform12 in die MovingPlatform.
Die Position von Plattform1 sollte (0, -1, 0) sein, während für Platform6 Es ist (14, -1, 0) und für Plattform12 (20,3, -1, 0). Nach dem Platzieren der Sprites sollte Ihr Szenario folgendermaßen aussehen:
Nachdem Sie nun alle Assets installiert haben, ist es an der Zeit, die Slider-Verbindung 2D zu erstellen und zu konfigurieren. Wählen Platform6 und fügen Sie ein Schiebefuge 2D Komponente dazu. Unity fügt automatisch eine RigidBody 2D auch. Aktivieren Freeze Rotation Z auch. Nun wähle Plattform1 und fügen Sie ein RigidBody 2D. Aktivieren Sie die Optionen Ist kinematisch und Freeze Rotation Z.
Nun wähle Platform6, entferne das Plattformeffekt 2D Komponente und deaktivieren Sie die Option Wird von Effector verwendet auf der Box Collider 2D Komponente.
Die verfügbaren Felder in der Schiebefuge 2D Komponenten ähneln denen, die Sie in gesehen haben Scharnier gemeinsam, aber mit einigen semantischen Änderungen. Weil Schiebergelenke nicht linear, sondern linear verlaufen, Motor Geschwindigkeit wird in Einheiten pro Sekunde gemessen. Anstelle von Winkelgrenzen können Sie auch Translationsgrenzen angeben. Übersetzungsgrenzen wie Winkelbegrenzungen arbeiten, außer dass sie den Abstand angeben, den der starre Körper von dem Abstand nehmen darf Angeschlossener Anker Punkt.
Wende Kollision aktivieren on, da die Plattform mit den verbundenen Plattformen kollidieren soll. Ziehen Plattform1 zum Verbundener starrer Körper. Stellen Sie das ein Angeschlossener Anker bis (-0,082, -0,0646). Aktivieren Motor verwenden und setze das Motor Geschwindigkeit zu -2.
Wenn Sie drücken abspielen, Sie werden sehen, dass sich die mittlere Plattform jetzt bewegt. Sobald es jedoch die nächste Plattform erreicht hat, stoppt es. Um dies zu beheben, müssen Sie das hinzufügen MovingPlatform Skript zu Platform6. Ziehen Plattform12 zu Plattform A und Plattform1 zum Feld Plattform B.
Drücken Sie abspielen, und vergewissern Sie sich, dass alles wie erwartet funktioniert. Nun, da das Hindernis fertig ist, erstellen Sie ein Fertigteil und platzieren Sie es in der Hindernisse Mappe.
Relative Joint 2D ermöglicht es zwei Spielobjekten, die von der Starrkörperphysik gesteuert werden, eine Position basierend auf der Position des jeweils anderen zu halten. Um diese Verbindung zu implementieren, erstellen Sie zwei Plattformen. Einer ist im Raum fixiert, während der andere sich um ihn herum bewegt und ein kreisförmiges Hindernis bildet.
Erstellen Sie ein neues leeres GameObject im Position (102,7, 4,2, 0) und nennen Sie es Relativ. In der Assets \ GameAssets \ Plattformen Ordner ziehen Plattform11 in die Relativ GameObject und ändern Sie den Namen in Plattform2. Ändern Sie seine Position zu (-.45, -5,97, 0) und das Rahmen zu (.5, 0,5, 1). Füge hinzu ein Starrkörper 2D Komponente und überprüfen Sie die Ist kinematisch Eigentum. Der erste Teil des Hindernisses ist erstellt, also fahren wir fort und fügen die zweite Plattform hinzu.
Ergänzen Sie die MetalPlatform Sprite (in der Kostenlose Assets \ Sprites Ordner) in die Relativ GameObject, nennen Sie es Plattform, ändere das Reihenfolge in der Schicht zu 2, und setze das Position zu (-.37, 1,23, 0). Fügen Sie zwei Komponenten hinzu: a Starrkörper 2D und ein Box Collider 2D. Ändere das Größe des Box Collider 2D zu (2,32, 0,55).
Fügen Sie jetzt eine Relative Fuge 2D Komponente zum Plattform. In der Verbundener starrer Körper du solltest platzieren Plattform2.
Das Max Force Diese Eigenschaft legt den linearen Versatz (gerade Linie) zwischen verbundenen Objekten fest. Ein hoher Wert (bis zu 1.000) erfordert eine hohe Kraft, um den Versatz beizubehalten. Das Maximaler Drehmoment Legt die Winkelbewegung (Drehung) zwischen verbundenen Objekten fest. Stellen Sie beide Werte auf 200. Das Offset automatisch konfigurieren sollte überprüft werden.
Wenn Sie Ihr Spiel ausführen, werden Sie feststellen, dass sich nichts bewegt. Sie müssen einen letzten Schritt ausführen, der das Hinzufügen von RelativeJoint (innerhalb der Skripte Ordner) Skript in die Plattform GameObject. abspielen das Spiel und testen, ob alles wie vorgesehen funktioniert.
Die endgültige gemeinsame Konfiguration ist:
Nun, da das Hindernis fertig ist, erstellen Sie ein Prefab daraus, indem Sie das GameObject in das Hindernisse Mappe.
Mit der 2D-Komponente "Spring Joint" können zwei von der Starrkörperphysik kontrollierte Spielobjekte wie durch eine Feder miteinander verbunden werden. Die Feder wirkt auf ihre Achse zwischen den beiden Objekten mit einer bestimmten Kraft und versucht, diese in einem bestimmten Abstand zu halten.
Um diese Verbindung zu verwenden, erstellen Sie eine schwebende Brücke, die aus Wolken besteht. Die Wolken werden mit dem Spring Joint an einer anderen großen Wolke befestigt.
Erstellen Sie zunächst ein leeres GameObject. Nennen Sie es Frühling und sein setzen Position zu (120, 10, 0). Ergänzen Sie die Walkaway1 Sprite (in der Plattform Ordner) in die Frühling GameObject. Ändern Sie den Namen in CloudSpring und das Reihenfolge in der Schicht zu 1. Füge hinzu ein Starrkörper 2D und überprüfen Sie die Ist kinematisch Eigentum.
Nun fügen wir vier neue Sprites hinzu. Wähle aus Plattform9 Sprite aus dem gleichen Ordner und fügen Sie vier davon in den Ordner Frühling GameObject. Benennen Sie jedes Objekt PlatSpring01 zu PlatSpring04.
Jeder PlatSpring muss wie folgt in die richtige Position gebracht werden:
PlatSpring01: -7,63, -12,35, 0
PlatSpring02: -2,67, -11,16, 0
PlatSpring03: 1,88, -12,44, 0
PlatSpring04: 6,77, -12,58, 0
Ändere das Reihenfolge in der Schicht zu 4 für alle PlatSpring Objekte. Nun für jeden PlatSpring Sie müssen zwei Komponenten hinzufügen: a Starrkörper 2D und ein Federgelenk 2D. Für die Starrkörper 2D Komponenten, müssen Sie nur die überprüfen Rotation einfrieren auf der Z Achse.
Wenn Sie das hinzufügen Federgelenk 2D, es erstellt standardmäßig a Verbundener starrer Körper zum Szene Center.
Das ist nicht die beabsichtigte Wirkung. Deshalb sollten Sie das anhängen CloudSpring GameObject an die Verbundener starrer Körper von jedem PlatSpring.
Wenn Sie dies tun, wird die grüne Leitungsverbindung automatisch aktualisiert und in der CloudSpring.
Sie können das ändern Angeschlossener Anker und das Entfernung falls Sie es wollen. In diesem Tutorial ändern Sie jedoch nur die Angeschlossener Anker.
Für jeden PlatSpring, ändere das Angeschlossener Anker entsprechend:
PlatSpring01: -4,8, 0
PlatSpring02: -1,7, 0
PlatSpring03: 1,07, -0,11
PlatSpring04: 4,13, -0,11
Die vollständige Konfiguration von PlatSpring01 ist das Folgende:
Spielen Sie Ihr Spiel und testen Sie, ob alles gut platziert und konfiguriert ist. Nun, da das Hindernis fertig ist, erstellen Sie ein Prefab daraus, indem Sie das GameObject in das Hindernisse Mappe.
Das Reibungsgelenk 2D verbindet Objekte, die durch Starrkörperphysik gesteuert werden, und reduziert sowohl die Lineargeschwindigkeit als auch die Winkelgeschwindigkeit zwischen den Objekten, bis sie Null erreichen (d. H., Sie verlangsamt sie). Um das Reibungsgelenk 2D zu implementieren, erstellen Sie eine bewegliche Plattform, die mit physischen Eigenschaften mit einer Cloud verbunden ist.
Erstellen Sie zunächst ein leeres GameObject. Nennen Sie es FrictionPlatform und sein setzen Position zu (133, 5, 0). Ergänzen Sie die Plattform11 Sprite (in der Assets \ Sprites Ordner) in die FrictionPlatform. Ändern Sie den Namen in Unterstützung und setze das Ordnung in Layer bis 1, es ist Position zu (0, 0, 0), und sein Rahmen zu (.25, 0,25, 1). Sie sollten auch eine hinzufügen Starrkörper 2D und überprüfen Sie die Ist kinematisch Eigentum. Die restlichen Eigenschaften sollten auf den Standardeinstellungen belassen werden.
Nun füge das hinzu MetalPlatform Sprite in die FrictionPlatform. Ändern Sie seine Position zu (.31, -8,33, 0), und das Reihenfolge in der Schicht zu 3. Mit dem MetalPlatform ausgewählt, fügen Sie ein Starrkörper 2D, ein Box Collider 2D, und ein Plattformeffektor 2D. Das Box Collider 2D Größe sollte auf ((2,35, 0,5) mit Wird von Effector verwendet auf, während in der Starrkörper 2D Sie müssen das überprüfen Einfrieren von Position Y und das Freeze Rotation Z. Sie sollten jetzt etwas wie das Folgende haben:
Wenn Sie das Spiel spielen und über die springen MetalPlatform, Sie werden feststellen, dass sich nichts bewegt. Ändern wir dies durch Hinzufügen von a Reibungsgelenk 2D in die MetalPlatform. Das Verbundener starrer Körper sollte durch die ausgefüllt werden Unterstützung. Für dieses Gelenk lassen wir Unity durch Aktivieren die beste Ankerkoordinate festlegen Verbindung automatisch konfigurieren. Das Max Force und Maximaler Drehmoment sollte sein 1, während Kraft brechen und Drehmoment brechen sollte sein Unendlichkeit.
Führe dein Spiel aus und lass uns das Reibungsgelenk testen. Nun, da das letzte Hindernis fertig ist, erstellen Sie ein Fertigteil davon und platzieren Sie es in der Hindernisse Mappe.
Damit ist der zweite Tutorialteil über Unity Joints 2D abgeschlossen. Sie haben vier Gelenke kennen gelernt, nämlich die Gleit-, Relativ-, Feder- und Reibungsgelenke. Mit diesem Wissen und allem, was Sie im ersten Teil gelernt haben, können Sie jetzt komplexe 2D-Spiele mit komplexen 2D-Physik-Eigenschaften erstellen.
Wenn Sie Fragen oder Kommentare haben, können Sie wie immer eine Zeile in den Kommentaren einfügen.