
Dieses Buch richtet sich an alle, die Spiele erstellen möchten, aber noch keine Erfahrung in der Entwicklung haben. Unity unterstützt mehrere Programmiersprachen. In diesem Buch werden wir C # verwenden. Bevor Sie mit dem Erstellen von Spielen beginnen, müssen Sie die Grundlagen ihres Designs sowie die Unity-Spiele-Engine selbst verstehen. Im ersten Teil des Buches werden wir diese Probleme untersuchen. Im zweiten und dritten Teil werden wir den Prozess der Erstellung zweidimensionaler bzw. dreidimensionaler Spiele betrachten, und im vierten Teil werden wir über andere Unity-Funktionen sprechen, deren Kenntnis für Sie nützlich sein wird.
6. Die Implementierung des Gameplays mit Fallen und Zielen
Einfache FallenDer größte Teil dieses Spiels besteht darin, mit den Berührungen verschiedener Objekte umzugehen - Fallen, Schätze, Austrittspunkte usw. In Anbetracht dessen, wie wichtig es ist, zu bestimmen, wann bestimmte Objekte berührt werden sollen, erstellen wir ein allgemeines Skript, das ein Einheitsereignis generiert, wenn ein Objekt mit dem Tag "Player" diese berührt. Dieses Ereignis wird dann für verschiedene Objekte unterschiedlich konfiguriert: Fallen informieren den Spielmanager, dass der Gnom Schaden erlitten hat, der Schatz meldet, dass der Gnom den Schatz aufgenommen hat, und der Ausgangspunkt ist, dass der Gnom den Ausgang erreicht hat.
Erstellen Sie nun ein neues C # -Skript in einer Datei namens SignalOnTouch.cs und fügen Sie den folgenden Code hinzu:
using UnityEngine.Events; // UnityEvent, "Player" // . [RequireComponent (typeof(Collider2D))] public class SignalOnTouch : MonoBehaviour { // UnityEvent . // . public UnityEvent onTouch; // true, AudioSource. public bool playAudioOnTouch = true; // , // SendSignal. void OnTriggerEnter2D(Collider2D collider) { SendSignal (collider.gameObject); } // , // SendSignal. void OnCollisionEnter2D(Collision2D collision) { SendSignal (collision.gameObject); } // "Player" // UnityEvent, . void SendSignal(GameObject objectThatHit) { // "Player"? if (objectThatHit.CompareTag("Player")) { // , if (playAudioOnTouch) { var audio = GetComponent<AudioSource>(); // // , // if (audio && audio.gameObject.activeInHierarchy) audio.Play(); } // onTouch.Invoke(); } } }
Die Basis der SignalOnTouch-Klasse ist die SendSignal-Methode, die von den Methoden OnCollisionEnter2D und OnTriggerEnter2D aufgerufen wird. Die letzten beiden Methoden werden von der Unity-Engine aufgerufen, wenn das Objekt den Collider berührt oder wenn das Objekt in den Bereich des Triggers fällt. Die SendSignal-Methode überprüft das Tag des Objekts und generiert, wenn sie die Zeichenfolge "Player" speichert, ein Unity-Ereignis.
Nachdem Sie die SignalOnTouch-Klasse haben, können Sie die erste Falle hinzufügen.
1. Importieren Sie Sprites von Objekten. Importieren Sie den Inhalt des Ordners Sprites / Objects in das Projekt.
2. Fügen Sie die braunen Stacheln hinzu. Suchen Sie das SpikesBrown-Sprite und ziehen Sie es in die Szene.
3. Richten Sie das Objekt mit Spikes ein. Fügen Sie dem mit Spikes versehenen Objekt die Komponenten PolygonCollider2D und SignalOnTouch hinzu.
Fügen Sie dem SignalOnTouch-Ereignis eine neue Funktion hinzu. Ziehen Sie den Game Manager in das Objektfeld und wählen Sie die Funktion GameManager.TrapTouched aus (siehe Abb. 1). 6.1.
4. Konvertieren Sie das mit Spikes versehene Objekt in eine Vorlage. Ziehen Sie das SpikesBrown-Objekt aus dem Hierarchiefenster in den Ebenenordner. Als Ergebnis wird eine Vorlage erstellt, mit der Sie mehrere Kopien des Objekts erstellen können.
5. Testen Sie es. Starte das Spiel. Lassen Sie den Gnom die Stacheln treffen. Dieser Gnom muss fallen und wieder auftauchen!
Schatz und Ausgang
Nach dem erfolgreichen Hinzufügen der Falle, die den Gnom tötet, ist es Zeit, die Möglichkeit hinzuzufügen, das Spiel zu gewinnen. Fügen Sie dazu zwei neue Elemente hinzu: einen Schatz und einen Ausgangspunkt.
Ein Schatz ist ein Sprite am Boden eines Brunnens, der die Berührung eines Gnoms erkennt und ein Signal an den Spielmanager sendet. In diesem Fall teilt der Spielmanager dem Gnom mit, dass er den Schatz ergriffen hat. Anschließend wird das Sprite mit dem Bild der leeren Hand des Gnoms durch das Sprite mit dem Bild der Hand ersetzt, die den Schatz hält.
Ein Austrittspunkt ist ein weiteres Sprite, das sich oben am Brunnen befindet. Wie ein Schatz erkennt es eine Berührung des Gnoms und benachrichtigt den Spielmanager darüber. Wenn in diesem Moment der Gnom den Schatz hält, erhält der Spieler den Sieg im Spiel.
Die Hauptarbeit in diesen beiden Objekten wird von der SignalOnTouch-Komponente ausgeführt. Wenn der Gnom den Austrittspunkt erreicht, sollte die ExitReached-Methode des Spielmanagers aufgerufen werden. Wenn der Gnom den Schatz berührt, sollte die TreasureCollected-Methode aufgerufen werden.
Beginnen wir mit der Erstellung eines Ausstiegspunkts und fügen dann einen Schatz hinzu.
Ausgangspunkt erstellen
Zunächst importieren wir Sprites.
1. Importieren Sie Level-Hintergrund-Sprites. Kopieren Sie den Sprites / Background-Ordner aus dem heruntergeladenen Paket mit Ressourcen in den Sprites-Ordner des Projekts.
2. Fügen Sie ein Sprite-Top hinzu. Platzieren Sie es direkt unter dem Seilobjekt. Dieses Sprite dient als Ausgangspunkt.
3. Richten Sie das Sprite ein. Fügen Sie die Box Collider 2D-Komponente zum Sprite hinzu und aktivieren Sie das Kontrollkästchen Is Trigger. Klicken Sie auf die Schaltfläche Collider bearbeiten und ändern Sie die Größe des Colliders so, dass er kurz und breit ist (siehe Abb. 1). 6.2.
4. Konfigurieren Sie das Senden eines Signals an den Spielmanager, sobald Sie das Sprite berühren. Fügen Sie dem Sprite die SignalOnTouch-Komponente hinzu. Fügen Sie der Ereignisliste der Komponente ein Element hinzu und verbinden Sie es mit dem Game Manager. Wählen Sie die Funktion GameManager.ExitReached. Wenn Sie nun den Exit-Gnom berühren, wird die ExitReached-Methode des Game Managers aufgerufen.
Fügen Sie nun den Schatz hinzu.
Der Schatz funktioniert folgendermaßen: Standardmäßig zeigt das Schatzobjekt ein Sprite mit dem Bild des Schatzes an. Wenn der Gnom ihn berührt, wird die TreasureCollected-Methode des Spielmanagers aufgerufen und anstelle des Schatzes wird ein anderes Sprite angezeigt, das anzeigt, dass der Schatz aufgenommen wurde. Wenn der Gnom stirbt, kehrt das Schatzobjekt in seinen ursprünglichen Zustand zurück und zeigt das Sprite wieder mit dem Bild des Schatzes an.
Da das Ändern von Sprites im Spiel ziemlich oft durchgeführt wird - Sie werden dies sehen, wenn wir die Grafiken verbessern -, ist es sinnvoll, eine universelle Klasse zum Ändern von Sprites zu erstellen und diese im Schatzobjekt zu verwenden.
Erstellen Sie ein neues C # -Skript mit dem Namen SpriteSwapper.cs. Fügen Sie den folgenden Code hinzu:
// . , // ' ' ' '. public class SpriteSwapper : MonoBehaviour { // , . public Sprite spriteToUse; // , // . public SpriteRenderer spriteRenderer; // . ResetSprite. private Sprite originalSprite; // . public void SwapSprite() { // ... if (spriteToUse != spriteRenderer.sprite) { // originalSprite originalSprite = spriteRenderer.sprite; // . spriteRenderer.sprite = spriteToUse; } } // . public void ResetSprite() { // ... if (originalSprite != null) { // ... . spriteRenderer.sprite = originalSprite; } } }
Die SpriteSwapper-Klasse ist für zwei Operationen ausgelegt: Wenn die SwapSprite-Methode aufgerufen wird, wird ein weiteres Sprite zur Anzeige an den SpriteRenderer-Visualizer übergeben, der mit dem Spielobjekt verbunden ist. In diesem Fall wird das ursprüngliche Sprite in einer Variablen gespeichert. Wenn die ResetSprite-Methode aufgerufen wird, wird dem Visualizer das ursprüngliche Sprite zur Anzeige gesendet.
Jetzt können Sie das Schatzobjekt erstellen und anpassen.
1. Fügen Sie ein Sprite mit einem Schatzbild hinzu. Suchen Sie das Sprite TreasurePresent und fügen Sie es der Szene hinzu. Platzieren Sie es nahe am Boden, aber so, dass der Gnom es bekommen kann.
2. Fügen Sie einen Collider für den Schatz hinzu. Wählen Sie das Sprite mit dem Bild des Schatzes aus und fügen Sie die Box Collider 2D-Komponente hinzu. Aktivieren Sie das Kontrollkästchen Ist Trigger.
3. Fügen Sie ein Skript zum Ändern des Sprites hinzu und konfigurieren Sie es. Fügen Sie die SpriteSwapper-Komponente hinzu. Ziehen Sie das Sprite mit dem Bild des Schatzes in das Feld Sprite Renderer dieser Komponente. Suchen Sie dann das TreasureAbsent-Sprite und ziehen Sie es in das Feld Sprite To Use des Sprite-Wechslers.
4. Fügen Sie die Signalgeberkomponente als Reaktion auf ein Tippen hinzu und konfigurieren Sie sie. Fügen Sie die SignalOnTouch-Komponente hinzu. Fügen Sie der On Touch-Liste zwei Elemente hinzu:
- Verknüpfen Sie zuerst das Game Manager-Objekt und wählen Sie die GameManager.TreasureCollected-Methode aus.
- Verknüpfen Sie das zweite mit dem Schatz-Sprite (dh mit dem Objekt, das Sie gerade einrichten) und wählen Sie die SpriteSwapper.SwapSprite-Methode aus.
5. Fügen Sie die zurücksetzbare Komponente hinzu und konfigurieren Sie sie. Fügen Sie dem Objekt eine zurücksetzbare Komponente hinzu. Fügen Sie der On Touch-Liste ein einzelnes Element hinzu, wählen Sie die SpriteSwapper.ResetSprite-Methode aus und ordnen Sie sie dem Treasure-Objekt zu.
Infolgedessen sollten die Einstellungen im Inspektorfeld wie in Abb. 1 dargestellt aussehen. 6.3.
6. Testen Sie das Spiel. Starte das Spiel und berühre den Schatz. In diesem Moment wird der Schatz verschwinden; Wenn danach der Gnom stirbt, erscheint der Schatz nach der Erschaffung des neuen Gnoms wieder an seiner Stelle.
Hintergrund hinzufügen
Derzeit findet das Spiel vor einem mattblauen Hintergrund statt, der standardmäßig in Unity festgelegt ist. In diesem Abschnitt werden wir einen temporären Hintergrund hinzufügen, den wir durch ein Hintergrund-Sprite ersetzen, wenn wir beginnen, das Grafikdesign des Spiels zu verbessern.
1. Fügen Sie ein Hintergrundrechteck hinzu. Öffnen Sie das GameObject-Menü und wählen Sie 3D ObjectQuad (3D ObjectRectangle). Nennen Sie das neue Objekt Hintergrund.
2. Verschieben Sie den Hintergrund in den Hintergrund. Um zu vermeiden, dass ein rechteckiger Hintergrund über die Sprites des Spiels gezeichnet wird, verschieben Sie ihn von der Kamera weg in den Hintergrund. Setzen Sie dazu die Z-Koordinate des Rechtecks auf 10.
3. Stellen Sie die Breite und Höhe des Hintergrundrechtecks ein. Schalten Sie das Rechteck-Werkzeug ein, indem Sie die T-Taste drücken, und legen Sie dann mit den Ziehpunkten die Abmessungen des Rechtecks fest. Der obere Rand des Hintergrunds sollte sich auf derselben Höhe befinden wie das Sprite oben in der Szene und der untere Rand mit dem Schatz (Abb. 6.4).
4. Testen Sie das Spiel. Nach dem Start sollte der Hintergrund des Spielfelds dunkelgrau werden.
»Weitere Informationen zum Buch finden Sie auf
der Website des Herausgebers»
Inhalt»
Auszug20% Rabatt auf Gutschein für Händler -
Einheit