[Neuling] Roll a Ball Extended Version - Lektion 5 - Gestaltung des Spielfeldes

  • Willkommen bei "[Neuling] Roll a Ball Extended Version - Lektion 5 - Gestaltung des Spielfeldes" 8)

    Diese Lektion setzt Lektion 4 dieser Reihe voraus und baut entsprechend darauf auf.


    Wir werden nun das Spielfeld gestalten. Diese Lektion könnt ihr entsprechend entweder selber gestalten oder ihr folgt weiterhin dem Inhalt.

    Falls ihr gänzlich Neu mit Unity arbeitet wird empfohlen sich weiterhin strikt an die Anweisungen zu halten.

    Ab Lektion 6 solltet ihr euch in jedem Fall wieder an das Vorgehen halten.


    Erstellt im Hierarchy Fenster per "Rechtsklick" => "Create Empty" ein leeres Spielobjekt. Empty's können so gesehen als Ordner missbraucht werden und sind teils sogar dafür gedacht.

    Stellt sicher, dass das soeben erstellte Objekt wie alle anderen kein Kind-Objekt ist. (Also keinen anderem untergeordnet ist.)

    Benennt es nun in "WallsLv5" um.


    Erstellt nun 1x ein 3D Cube Objekt. Benennt es in "WallNorth" um und zieht es im Hierarchy Fenster auf das "WallsLv5" Objekt, sodass es ein Kind-Objekt wird.

    Nun dupliziert die "WallNorth" 3 weitere Male (für jede Himmelsrichtung). Dies kann per "Rechtsklick => duplicate" oder mit "STRG + C" und "STRG + V" bewerkstelligt werden.

    Benennt die Duplikate nun folgendermaßen um in "WallEast", "WallSouth" und "WallWest".

    Markiert nun das "WallsLv5" Objekt sowie alle 4 Kind-Objekte (die 4 Wall... Objekte) und resettet ihre Position (über das Zahnrad), sodass alles im Ursprung sich befindet.


    Ändert nun die Transformation der 4 Elemente wie im Bild gezeigt:


    Ihr solltet nun einen Rahmen erhalten, der sich als Grenze um euer Spiel-Board zieht.


    Dupliziert nun 4 weitere Male das "WallsLv5" Ojekt, sodass sich insgesamt 5 derartige Gruppen in eurer Scene befinden.

    Die Duplikate benennt ihr in "WallsLv4", "WallsLv3", "WallsLv2" und "WallsLv1" um.

    Ändert nun die Transformation der Emptys (WallLv...) Objekte folgendermaßen:


    Ihr solltet nun lauter kleinere Rahmen im Spielfeld sehen.


    Erstellt nun ein neues Empty und benennt es "ObjectsLv1" - resettet zudem auch die Position, damit es im Ursprung sich befindet.

    Navigiert nun zum "FBX" Ordner im Project Fenster und wählt aus diesen das Objekt "Ramp4" aus und zieht es auf das "ObjectsLv1" Objekt im Hierarchy Fenster.

    Ändert nun die Koordinaten dieser Ramp4 zu "x= -19, y = 1, z = -19".

    Navigiert nun zu dem Ordner "Materials" und fügt ein neues Material in den Ordner hinzu.

    Benennt dieses "Environment" und ändert wie in einer vorherigen Lektion gezeigt die Farbe entsprechend mit dem Hex-Wert: "781E28"

    Wechselt nun wieder zum "Ramp4" Objekt, welches in der Szene zu sehen ist und zieht dieses soeben (rötliche) Material auf diese Rampe.


    Navigiert nun in den Prefabs Ordner im Project Fenster.

    Zieht nun die im Hierarchy befindliche "Ramp4" in den Prefabs Ordner. Setzt die Werte der Ramp4 im Prefabs befindlichen Ordner der Transformation nun auf "x = 0, y = 0, z = 0".

    Euer Editor sollte nun entsprechend ca. so aussehen:


    Der Vorteil eines "Prefabs" Objektes liegt darin, dass alle Instanzen, also alle Objekte, die von diesem Objekt in die Szene 'gezogen' wurden, miteinander mit dem Original 'Prefab' zusammen hängen.

    Sprich: Würden wir die Farbe dieser Rampe im Prefab Ordner ändern und davor weitere Objekte in die Szene ziehen, so werden diese automatisch auch ihre Farbe ändern.

    Wenn ein Objekt zudem ein Prefab ist, wird es in der Hierarchy mit einer blauen Schrift dargestellt (siehe Bild).


    Klicken wir nun im Scene Fenster auf die Rampe, sehen wir folgendes:



    Mittels "Select" gelangen wir zum Original (Prefab).

    Sollten wir auf dem Original Prefab etwas ändern, z.B. eine neue Komponent hinzufügen, können wir mit "Revert" das im Scene befindliche Objekt mit dem Original synchronisieren, falls es zuvor nicht mehr synchron war (!) Im Normalfall, wenn nichts geändert wird, synchronisiert es automatisch alle Komponente.

    Haben wir hingegen z.B. eine Komponente im Scene Fenster befindlichen Objekt hinzugefügt, so können wir dies auch mit dem Original (Prefab-Ordner-Objekt) mit "Apply" synchronisieren.

    (Werte, die vom Scene befindlichen Objekt vom Prefab abweichen, werden "Fett" dargestellt".)


    Testet nun kurz das Spiel und rollt zur unteren Seite, um die Rampe zu begehen.

    Wenn ihr alles richtig gemacht habt, so könnt ihr die Rampe nicht betreten, sondern fahrt durch sie hindurch.

    Dies liegt daran, dass unsere Rampe kein Primitiv ist und somit kein voreingestellten "Collider" als Komponente aufweist.

    Verlasst den Play-Mode und vergleicht die Mauern mit der Rampe. Die Mauern besitzen von Unity aus schon einen Box Collider.


    Navigiert nun zum im Prefab Ordner befindlichen "Ramp4" Objekt. Klickt dieses an und fügt ihm eine Komponente hinzu.

    Add Component => Physics => Mesh Collider

    Nun sollte auch das in Scene befindliche Objekt (Ramp4) eine solche Komponente besitzen.

    Wir haben eine andere Form, als die üblichen Collider und nehmen daher dieses. Standardmäßig setzt Unity euer 3D Objekt Mesh als Collider von dieser Komponente in das Feld "Mesh" ein.

    Da es sich hierbei um ein Low Poly Objekt handelt, ist dies absolut okay für uns. Andernfalls würde man ein Low Poly Mesh nehmen.

    Dies ist hier jedoch nicht der Fall / von Relevanz.


    Testet nun erneut das Spiel und ihr werdet sehen, dass ihr nun die Rampe befahren könnt, sofern ihr alles richtig gemacht habt.

    Wenn nicht, prüft ob euer Prefab die Komponente Mesh Collider besitzt und somit auch das Objekt in der Szene.

    (Wie es zu synchronisieren ist, steht ja oben.)


    Als nächstes fügt als Kind-Objekte in das Objekt "ObjectsLv1" folgende Objekte ein:

    7x Cube Objekte (3D) und aus dem FBX Ordner 1x Ramp1, 1x Ramp2, 1x Ramp3 und 1x Archway.


    Die 7x Cube Elemente werden wie auf dem Bild zu sehen entsprechend so angepasst, sodass jeder eine Transform-Komponente aus dem Bild erhält:

    Die restlichen Einstellungen bzw. Komponente der Cube's können so bleiben, wie sie sind. (Bitte achtet auch auf die Umbenennung der Cube's.


    Wechselt nun in den Materials Ordner des Project Fensters und zieht das "Environment" Material auf die Elemente "Ramp1, Ramp2 und Ramp3".

    Wenn ihr nicht an die Objekte kommt, verschiebt diese entsprechend so, dass ihr die Materials darauf platzieren könnt.

    Bleibt in den Materials Ordner und erstellt ein neues Material mit dem Namen "Elevator" und den farblichen Hex-Wert: "1E5532".

    Zieht dieses neu erstellte Material nun auf den "Elevator" Cube und den "Plattform" Cube.


    Wählt nun in der Hierarchy die verbleibenden Ramp1, Ramp2, Ramp3 und Archway Objekte nacheinander an und übergebt ihnen ein "Mesh Collider" Komponent (es kann auch die Sucher im Kontextmenü von "Add Component" verwendet werden.) Wenn jedes der 4 Objekte einen Mesh Collider besitzt, geht in das jeweilige Transform Komponent der Objekte und resettet sie, sodass ihr Ursprung bei 0 liegt.

    Wechselt nun in den Prefabs Ordner des Project Fensters und zieht diese genannten 4 Objekte (über das Hierarchy-Fenster) nacheinander in den Prefabs Ordner. Zieht außerdem auch den "Elevator" sowie die "Plattform" in den Prefabs Ordner.


    Wir haben nun mehrere Bauteile, die wiederverwendet werden können in unserem Prefabs Ordner.


    Nun wollen wir noch die Ramp1, Ramp2, Ramp3 und Archway Objekte an ihre Position in der Szene bringen. Die Namen habe ich im folgenden Bild daher nicht verändert. Gebt für das jeweilige Objekt die Transform Daten genau so von der Szene ein, in der sie platziert sind.


    Habt ihr alles richtig gemacht und diese Lektion entsprechend so nachgemacht, sollte es folgendermaßen aussehen:


    Sollte es nicht so aussehen, wäre es gut die entsprechenden Schritte zu wiederholen.


    Ihr könnt diesen kleinen Hindernislauf nun im Play-Mode testen.

    => Speichern nicht vergessen.



    Weiter geht es in "[Neuling] Roll a Ball Extended Version - Lektion 6 - Münzen für den Spieler"

    :s_info: Ehemalig in dieser Community als Toothless bekannt, habe ich nun meinen Künstlernamen angenommen: Cryptogene

    So manch einer kennt ja ohnehin schon meine 3D Szenen.


    ninja_pointright Ihr wollt euch für das Forum bedanken und dieses zu 100% unterstützen? Ihr könnt uns finanziell durch eine Schenkung unterstützen. Danke für euren Support!