In diesem Tutorial zeige ich Ihnen, wie Sie einen einfachen, zerstörerischen Effekt für Ihr Unity-Spiel erstellen. Anstatt eine Kiste (oder ein anderes Objekt) einfach zu "löschen", wenn sie getroffen oder zerstört wird, können wir sie in kleinere Teile zersplittern lassen.
Für dieses Lernprogramm benötigen Sie die neueste Version von Unity und einige Grundkenntnisse. Für den weiterentwickelten Effekt im weiteren Verlauf des Lernprogramms ist außerdem ein 3D-Modellierungswerkzeug erforderlich. Wenn Sie keine zur Verfügung haben oder die Objekte nicht selbst modellieren möchten, habe ich sie in die Quellendownloads aufgenommen. (Die Unity-Dateien selbst sind auch dort verfügbar.)
In der Basisversion dieses Effekts wird ein Würfel zerstört, wobei mehrere Fragmente zurückbleiben, die realistisch zu Boden fallen:
Später wechseln wir den Würfel gegen ein komplizierteres Fassmodell:
Sie können es hier selbst ausprobieren:
Klicken Sie hier, um die Demo zu testen. (Die Cube-Demo ist auch hier verfügbar.)Erstellen Sie ein neues Unity-Projekt und öffnen Sie eine neue Szene. Erstellen Sie eine Ebene, die als Boden dient, und einen Würfel, der das zerstörbare Objekt sein wird. Platzieren Sie auch ein gerichtetes Licht, um die Sichtbarkeit zu erhöhen. Erstellen Sie zwei neue Materialien und ordnen Sie sie dem Boden und dem Würfel zu, damit wir sie voneinander unterscheiden können, und bewegen Sie die Kamera so, dass alles sichtbar ist:
Es gibt viele Möglichkeiten, den Würfel zu "zerstören". Für den Moment gehen wir den einfachsten möglichen Weg.
Erstellen Sie eine neue JavaScript-Datei und benennen Sie sie destructionController.js
. Hier werden wir alle Funktionen zum Entfernen des Würfels und zum Erstellen der Fragmente verwenden. Fügen Sie die folgenden Zeilen hinzu:
function Update () if (Input.GetKey (Keycode.space)) Zerstören (gameObject);
Fügen Sie das Skript nun dem Cube hinzu, indem Sie es darauf ziehen. Starten Sie das Spiel und machen Sie einen Testlauf. Wenn Sie die Leertaste drücken, sollte der Cube gelöscht werden.
Nachdem es entfernt wurde, erscheint es auch nicht mehr in der Hierarchie, wie im Screenshot zu sehen ist.
Erstellen Sie nun acht kleinere Würfel. Dies sind die "Fragmente" des aktuellen Cubes. Gib ihnen das gleiche Material wie den Würfel. (Mach dir keine Sorgen über das Aussehen, wir machen sie später toll.) Sie sollten so aussehen:
Stapeln Sie alle 8 Würfel, um einen größeren, einzigen Würfel zu bilden, ohne dass sie sich überschneiden:
Gib jedem Würfel einen steifen Körper, setze ihn Masse zu 22
, aktivieren Sie Verwenden Sie die Schwerkraft, und deaktivieren ist kinematisch. Dadurch werden die Fragmente herunterfallen und Physik verwenden. Wenn Sie möchten, können Sie diese Werte später anpassen, um bessere Ergebnisse für Ihr Spiel zu erzielen.
Nun gruppiere die Würfel unter einem neuen leeren Feld gameObject
und nenne es bleibtCube
. Wenn der ursprüngliche Würfel zerstört wird, wird er durch dieses neue Objekt ersetzt, das aus kleineren Würfeln besteht.
Zieh den bleibtCube
Objekt in den Projektordner, um daraus ein Prefab zu erstellen. Wenn es sich sicher im vorgefertigten Ordner befindet, löschen Sie es aus der Hauptszene und ist betriebsbereit.
Fügen Sie die markierten Zeilen zum hinzu ZerstörungController
Skript:
var bleibt: GameObject; function Update () if (Input.GetKey (Keycode.space)) Instanziieren (bleibt, transform.position, transform.rotation); Zerstöre (gameObject);
Dadurch wird eine Kopie der Überreste an der genauen Position des Würfels erstellt. Danach wird der Würfel entfernt, wodurch die Illusion entsteht, dass der neue tatsächlich der alte ist, aber "kaputt" ist..
Damit dies tatsächlich funktioniert, müssen Sie die Überreste manuell dem Cube zuweisen. Klicken Sie darauf und in der Inspektor Sie sollten eine Registerkarte sehen, die das enthält Zerstörungscontroller Skript. Es sollte einen Slot geben Überreste, die sollte momentan leer sein. Zieh den Überreste
Prefab aus dem Projektordner in diesen Slot. Das Zerstörungscontroller Skript im Inspektor sollte jetzt so aussehen:
Machen Sie einen Testlauf! Wenn alles richtig eingerichtet ist, sollten Sie beim Drücken der Leertaste den Würfel ersetzen. Wenn Sie Glück haben, sollten sie auf den Boden fallen.
Also, dieser grundlegende Würfel:
… Sollte sich in etwas ähnliches verwandeln:
Leider kann nicht garantiert werden, dass die Fragmente auf eine schöne Art und Weise fallen. Glücklicherweise gibt es Wege, das zu lösen.
Erstellen Sie eine neue leere gameObject
und geben Sie ihm einen Kugelkollidator, aber keinen starren Körper. Ziehen Sie die Überreste in die Szene, damit Sie sie bearbeiten können. Fügen Sie den Resten das Kugelkolliderobjekt hinzu und platzieren Sie es so, dass es einige der Würfel schneidet:
Nun kollidieren die Fragmente sofort mit der Kugel und erzeugen einen Taumeleffekt:
Je nach Spiel, das Sie erstellen, können wir uns nicht zu viele "Splitter" in einer Szene leisten. Die einfache Lösung besteht darin, sie nach einigen Sekunden zu löschen. Erstellen Sie dazu eine neue JavaScript-Datei und benennen Sie sie selfDestruct.js
. Fügen Sie den folgenden Code ein:
function Start () Rendite WaitForSeconds (4.0); Zerstöre (gameObject);
Wenn das Objekt erstellt wird, wartet es vier Sekunden und wird dann selbst gelöscht. Fügen Sie diesen Code dem hinzu Überreste
Objekt. Wenn Sie jetzt den Würfel zerstören und die Fragmente erstellen, werden die Überreste sich nach vier Sekunden selbst zerstören.
Und das ist es! Jetzt haben Sie die Grundlagen, um ein Objekt effizient zerstückeln zu lassen, wenn es zerstört wird. Sie können diesen Effekt so verwenden, wie er ist, aber lassen Sie uns etwas näher darauf eingehen, wie er mit einem komplexeren Objekt verwendet werden kann.
Jetzt, da wir das Basissystem eingerichtet haben, können wir es schöner machen, indem wir die Würfel durch tatsächliche Objekte ersetzen.
Wenn Sie mit einem 3D-Modellierungswerkzeug vertraut sind, können Sie eigene Objekte erstellen. Wenn nicht, oder wenn Sie keine zur Verfügung haben, können Sie die vorbereitete 3D-Datei vom Quelldownload herunterladen.
Kopieren Sie die Datei in Ihren Asset-Ordner. Die 3D-Modelle werden automatisch importiert. Klicken Sie vor der Verwendung auf die Datei in der Asset Explorer Stellen Sie sicher, dass die Quelldateien mit einem Skalierungsfaktor von korrekt importiert werden 1
(nicht 0,1
oder 0,001
; das kompliziert nur Dinge).
Wenn Sie sich die Objekte ansehen, können Sie ein Feld namens sehen Netzfilter in dem Inspektor. Wenn Sie darauf klicken, erhalten Sie eine Liste aller verfügbaren Netze im Projekt. Ersetzen Sie nun alle Würfel im Würfel durch Laufteile.
Der intakte Würfel erhält die Fass
Mesh; Die kleineren Würfelfragmente benötigen die Maschen Fassfragment_01
zu barrel_fragment_08
. Nachdem diese zugewiesen wurden, setzen Sie ihre lokalen Positionen auf (0, 0, 0)
. (Ihre Drehpunkte sind so eingestellt, dass sie auf diese Weise leicht auf Null gesetzt werden können.)
Anstelle eines Box-Colliders wäre ein Mesh-Collider viel bequemer. Entfernen Sie alle Box-Colliders auf den Fragmenten und ersetzen Sie sie durch Netz-Colliders. Überprüfen Sie jeden Netzcollider und stellen Sie sicher, dass auf jedes Netz das richtige Netz angewendet wurde (d. H, Fassfragment_01
braucht die Fassfragment_01
Netz usw..
Wenn dies erledigt ist, setzen Sie alle Mesh-Collider auf konvex
. (Ein nicht konvexer Netzkollider kann nicht mit anderen nicht konvexen Netzkollidern kollidieren. Dies ist eine Programmiersache.) Entfernen Sie außerdem den Kugelkollider, den wir zu den Überresten hinzugefügt haben, da dies möglicherweise nicht erforderlich ist.
Wenn alles richtig eingestellt ist, sollten Sie einen Lauf haben, der in acht kleinere Teile zerfällt.
Dasselbe System kann auch verwendet werden, um der Zerstörung weitere Effekte hinzuzufügen. Hast du eine Explosion? Fügen Sie es den Überresten hinzu! Fügen Sie Klänge hinzu, um ein zufriedenstellendes Ergebnis zu erzielen Riss. Setzen Sie dort einen Partikeleffekt ein, der eine kleine Rauchwolke erzeugt.
In diesem Tutorial habe ich Ihnen die einfachste Möglichkeit gezeigt, wie ein Objekt in kleinere Fragmente zerbricht. Jetzt wissen Sie, wie Sie ein Objekt zerstören können, indem Sie es aus dem Spiel entfernen. wie man das Objekt direkt vor seiner Zerstörung mit kleineren Fragmenten austauscht; und wie man die Fragmente danach selbst zerstören lässt.
Dieses System kann jetzt modifiziert und an viele spezifische Zwecke angepasst werden. Sie könnten eine Kiste oder einen Fasssplitter haben und beim Erschießen zerbrechen. Sie könnten eine Explosion erstellen, nachdem ein Flugzeug getroffen wurde. Oder Sie könnten ein Boot in zwei Teile zerbrechen lassen. Genießen!