So erstellen Sie ein einfaches Android-Spiel mit Unity

In einem früheren Appuals-Tutorial mit dem Titel Wie erstelle ich ein einfaches Unity-Plattform-Spiel ( und seinen Teil 2), haben wir mit Unity und dem eingebauten WebGL-Plug-in ein einfaches HTML5-basiertes Browserspiel erstellt - in diesem Tutorial, Wir werden Ihnen zeigen, wie Sie mit Unity ein einfaches Android- Spiel erstellen können.

Bedarf:

  • Einheit
  • Ein guter Texteditor wie NotePad ++ (Optional aber empfohlen)
  • Android SDK
Wenn Sie es noch nicht haben, sollten Sie zunächst das Unity SDK und auch das Android SDK herunterladen und installieren. Wir benötigen das Android SDK, damit wir das APK des Spiels in einer Android-Umgebung testen können.

Starten Sie Unity und erstellen Sie ein neues Projekt. Machen Sie es zu einem 2D-Projekt.

Es gibt mehrere Panels, mit denen du dich vertraut machen kannst - das Hierarchie-Panel, das alle unsere Szenenelemente enthalten wird (Szene = egal welches Level du gerade arbeitest). Dann gibt es die Registerkarte Spiel, die für das Spielen / Testen Ihres Spiels im Editor verwendet wird, und auf der rechten Seite befindet sich das Inspektor-Feld, in dem Sie verschiedene Dinge wie Beleuchtung, Physik usw. bearbeiten.

Das erste, was wir tun wollen, ist ein Sprite zu erstellen - das wird unser Hauptcharakter sein (den wir kontrollieren). Sie können entweder Ihr eigenes Sprite zeichnen, einfach ein Quadrat mit den Augen zeichnen, oder Sie können ein Sprite aus dem Internet holen - stellen Sie einfach sicher, dass es eine .PNG-Datei ist (transparenter Hintergrund).

Ziehen Sie Ihr Sprite per Drag-and-Drop auf das Hauptszenenfenster (das größte Fenster) - es wird auch im Hierarchiefenster auf der linken Seite angezeigt.

Jetzt werden wir ein paar Plattformen erstellen - das können einfache Quadrate sein, weil wir sie einfach in der Größe ändern können, um Wände und andere Plattformen zu erstellen.

Erstellen Sie einfach ein neues quadratisches Sprite und ziehen Sie es in das Szenenfenster, wie Sie es mit Ihrem Sprite-Zeichen getan haben.

Jetzt müssen wir Unity anweisen, unserem Hauptcharakter Physik zu geben - klicke auf dein Haupt-Sprite-Zeichen (es sollte im Szenen-Fenster blau hervorgehoben werden), dann suche im Inspektor-Panel nach GameObjects.

Klicken Sie auf Komponente hinzufügen> Physik 2D> RigidBody2D. Dadurch wird Ihrem Sprite automatisch Physik hinzugefügt, die Sie sonst in einem anderen SDK selbst schreiben müssten.

Wir möchten verhindern, dass sich das Hauptspritezeichen außer Kontrolle verfliegt - so finden Sie die Registerkarte "Abhängigkeiten" im Inspektorfenster (wobei das Hauptsprite im Szenenfenster immer noch hervorgehoben ist) und aktivieren Sie das Kontrollkästchen für "Freeze Rotation Z".

Wenn du die Play-Taste drückst, sollte dein Sprite-Hauptcharakter vom Himmel fallen und einfach endlos fallen - wir werden uns später darum kümmern, aber nur darauf achten, wie leicht wir Physik anwenden können. Die Physik, die wir anwenden, hängt von der Form ab, auf die sie angewendet werden. Wenn Sie zum Beispiel die gleiche Physik auf eine Kugel anwenden würden, würde sie sich herumrollen.

Wir wollen auch unsere Orientierung fixieren, um zu verhindern, dass sich der Charakter dreht und frei herumläuft. Finde 'Einschränkungen' im Inspektor mit dem ausgewählten Spieler und aktiviere das Kästchen, um die Rotation Z zu fixieren. Klicke nun erneut auf "Spielen" und du solltest feststellen, dass dein Spieler nun vom Himmel zu seinem unendlichen Untergang fällt.

Um zu verhindern, dass unser Hauptsprite-Charakter einfach nur endlos fällt, müssen wir einen Collider hinzufügen. Dies ist im Grunde nur die solide Kontur einer Form, die wir dem Hauptsprite-Charakter hinzufügen. Markieren Sie das Sprite-Hauptzeichen und klicken Sie auf Komponente hinzufügen> Physik 2D> BoxCollider2D.

Jetzt machen Sie dasselbe mit der Plattform, die Sie zuvor erstellt haben. Dein Hauptcharakter sollte jetzt mit der Plattform kollidieren und dort bleiben.

Jetzt wollen wir sicherstellen, dass die Kamera Ihrem Sprite-Hauptcharakter folgt - innerhalb der Szene sollte es bereits ein Kamera-Objekt geben. Sie möchten dies über das Haupt-Sprite-Zeichen ziehen.

Dies ist besonders wichtig, wenn Sie einen 3D-basierten Runner erstellen, etwa Slope, bei dem die Kamera ständig hinter dem primären Spielobjekt (Ihrem Hauptsprite-Charakter) bleiben muss.

Wechseln Sie nun zum Hierarchiebedienfeld, und ziehen Sie in der Liste der GameObjects die Kamera unter das Haupt-Sprite-Zeichen (Player GameObject). Dadurch wird das Haupt-Sprite-Zeichen zum " Elternteil" der Kamera. Wann immer sich das Player GameObject auf dem Bildschirm bewegt, sollte die Kamera folgen.

Für dieses Spiel-Tutorial erstellen wir einfach ein einfaches endloses Spiel mit Läufern, ähnlich wie Run 3, wo dein Hauptcharakter über den Bildschirm läuft und Hindernissen ausweicht (oder Spiel vorbei, wenn du ein Hindernis triffst) um ein paar Skripte zu erstellen, von denen die meisten in diesem Handbuch zur Verfügung gestellt werden.

Klicken Sie mit der rechten Maustaste auf den Ordner Assets und erstellen Sie einen neuen Ordner - nennen Sie ihn Skripte . Klicken Sie nun mit der rechten Maustaste auf diesen neuen Ordner und wählen Sie Erstellen> C # -Skript und nennen Sie es PlayerControls . Dieses Skript wird das Verhalten unseres Haupt-Sprite-Charakters definieren.

Wenn Sie auf dieses neue Skript doppelklicken, sollte es in Visual Studio geöffnet werden - alternativ (und meine persönlichen Vorlieben) können Sie es in etwas wie NotePad ++ bearbeiten.

Die Skriptdatei sollte bereits ein wenig Code enthalten - im Prinzip ist dies ein Skript, das in Ruhe gelassen oder einfach an Ihre Bedürfnisse angepasst werden muss, und das spart uns viel Zeit. Also werden wir ein neues Objekt hinzufügen.

Über der Zeile void Start ():

öffentlich Rigidbody2D rb;

Der nächste Code, den wir hinzufügen müssen, wird in Start () eingefügt und dient dazu, den Starrkörper zu finden. Im Grunde weisen wir Unity an, die Physik zu finden, die wir den GameObjects (unserem Sprite-Hauptcharakter) und Start zugeordnet haben () wird ausgeführt, wenn ein neues Objekt oder Skript erstellt wird.

Als nächstes suchen Sie das Physik-Objekt.

 rb = GetComponent < Rigidbody2D > (); 

Und Sie werden diese Zeile in das Update () einfügen

 rb.velocity = neu Vector2 (3, rb.velocity.y); 

Was Update () tut, wird ständig aktualisiert, so dass dort hinzugefügter Code kontinuierlich ausgeführt wird (sofern das Objekt nicht zerstört wird). Also haben wir das Skript angewiesen, dass der Starrkörper einen neuen Vektor mit der gleichen Geschwindigkeit auf der Y-Achse (rb.velocity.y) haben soll, aber mit einer Geschwindigkeit von 3 auf der horizontalen Achse. In Zukunft können Sie auch ' FixedUpdate ()' verwenden, das ähnlich, aber anders ist, weil Sie dort den Aktualisierungs- / Aktualisierungsumfang des Skripts steuern können.

Speichern Sie das Skript und gehen Sie zurück in Unity. Klicken Sie dann auf Ihr Haupt-Sprite-Zeichen, um es hervorzuheben. Wechseln Sie im Inspektorfenster zu Komponente hinzufügen> Skripts und fügen Sie das soeben gespeicherte Skript hinzu. Wenn Sie jetzt auf die Schaltfläche "Abspielen" klicken, sollte sich das Sprite-Hauptzeichen kontinuierlich in Richtung Plattformkante bewegen.

PRO TIPP: Wenn das Problem bei Ihrem Computer oder Laptop / Notebook auftritt, sollten Sie versuchen, die Reimage Plus Software zu verwenden, die die Repositories durchsuchen und beschädigte und fehlende Dateien ersetzen kann. Dies funktioniert in den meisten Fällen, in denen das Problem aufgrund einer Systembeschädigung auftritt. Sie können Reimage Plus herunterladen, indem Sie hier klicken

Erstellen von Player-Eingabesteuerelementen

Da es sich also um ein endloses Runner Style Spiel mit Hindernissen handelt, müssen wir dem Spieler einige Steuerelemente hinzufügen, wie zum Beispiel einen "Sprung" -Knopf.

Öffnen Sie das Skript erneut von vorne, und wir fügen diesen zusätzlichen Code hinzu:

 if (Input.GetMouseButtonDown (0)) {rb.velocity = neuer Vector2 (rb.velocity.x, 5); } 

Sie werden das in die Update () -Methode einfügen, und was es im Grunde tut, ist Unity mitzuteilen, dass der Hauptsprite-Charakter hineinspringt, wenn der Spieler mit der Maus klickt (was als ein Bildschirmtipp auf Android übersetzt wird) die Luft. Dies liegt daran, dass wir eine Geschwindigkeit auf der Y-Achse mit einem Wert von 5 hinzugefügt haben (ein höherer Wert würde natürlich einen höheren Sprung bedeuten).

Wenn Sie mit dem Codieren nicht so vertraut sind, haben wir eine If- Anweisung verwendet, weil If im Grunde genommen eine Art von Anweisung ist oder nicht - es sagt wörtlich , wenn dies geschieht, diesen Befehl auszuführen . Wenn der Spieler also nicht mit der Maus klickt (oder auf den Android-Bildschirm tippt), wird das Skript offensichtlich nicht ausgeführt.

Gehen Sie weiter und klicken Sie auf den Play-Button und stellen Sie sicher, dass es richtig funktioniert, bevor Sie fortfahren.

Als nächstes werden wir unsere Hindernisse (die das Hauptcharakter-Sprite zerstören können), eine Spielpartitur und ein Spiel über das Menü hinzufügen.

Wenn Sie das Spiel bisher getestet haben, ist das einzige Problem, das wir bis jetzt haben, dass das Drücken der Sprungtaste den Charakter springt, egal ob sie geerdet sind oder nicht - das ist im Grunde genommen Flappy Birds und kein Läufer wie wir wollen . Aber wir werden das beheben.

Fügen Sie im Skript dieses Bit oberhalb der Update () -Methode hinzu:

 öffentlich transformieren öffentliche Transformation startPosition; öffentlicher Schwimmer groundCheckRadius; public LayerMask whatIsGround; private bool onGround; Fügen Sie dann diese nächste Zeile der Update-Methode über der if- Anweisung hinzu: onGround = Physics2D.OverlapCircle (groundCheck.position, groundCheckRadius, whatIsGround); Und als nächstes werden Sie diese folgende Zeile ändern, um && onGround einzufügen if (Input.GetMouseButtonDown (0) && onGround) {Unser gesamtes Skript sollte im Prinzip so aussehen: public class PlayerControls : MonoBehaviour { public Rigidbody2D rb; öffentlich transformieren öffentliche Transformation startPosition; öffentlicher Schwimmer groundCheckRadius; public LayerMask whatIsGround; private bool onGround; void Start () {rb = GetComponent (); } void Update () {rb.velocity = neuer Vector2 (3, rb.velocity.y); onGround = Physik2D.OverlapCircle (groundCheck.position, groundCheckRadius, whatIsGround); if (Input.GetMouseButtonDown (0) && onGround) {rb.velocity = neuer Vector2 (rb.velocity.x, 5); }}} 

Um zu erklären, was wir getan haben, haben wir eine neue Transformation geschaffen, die eine Position im Raum der Spielwelt bedeutet. Wir haben seinen Radius festgelegt und wir weisen Unity an zu überprüfen, ob der Radius sich mit unserer Bodenebene überschneidet - und wenn unser Radius mit dem Boden synchronisiert ist, sollte unser Charakter springen können, und wenn wir schon drin sind die Luft von einem Sprung, wir sollten nicht in der Lage sein, wieder zu springen. Grundsätzlich ist onGround wahr, wenn die Transformation namens groundCheck mit der Grundebene überlappt. Hoffentlich macht das Sinn.

Speichern Sie das Skript und gehen Sie zurück in Unity. Sie werden feststellen, dass nach dem Hervorheben des Players dem Inspektor weitere Optionen hinzugefügt wurden. Dies sind öffentliche Variablen, die wir nach unseren Wünschen anpassen können.

Klicken Sie nun mit der rechten Maustaste auf die Hierarchie und erstellen Sie ein neues leeres Objekt, und ziehen Sie es so, dass es unter dem Hauptzeichen-Sprite im Hauptfenster der Szene liegt. Positionieren Sie dieses leere Objekt dort, wo der Boden erkannt werden soll. Benennen Sie das Objekt in Check Ground um und ziehen Sie es dann unter das Spielobjekt des Players, wie zuvor mit der Kamera (um eine Eltern-Kind-Beziehung zwischen den Objekten zu erstellen). Jetzt folgt das leere Objekt dem Hauptcharakter Sprite, genau wie die Kamera, und es wird kontinuierlich die Bodenentfernung überprüfen

Wählen Sie nun das Sprite des Hauptcharakters und gehen Sie zum Inspektorfenster - ziehen Sie das Objekt "Check Ground" in den Raum "groundCheck". Die 'transform' Position sollte gleich der Position dieses neuen Objekts sein, und wo es Radius sagt, mach es 0.1.

Wir müssen die Grundschicht definieren. Wählen Sie einfach das Gelände aus und suchen Sie im Inspektor die Schaltfläche für Ebene: Standard (es ist eine Dropdown-Box) und wählen Sie Ebene hinzufügen.

Wähle nun den Boden als Ebene für unsere Plattform und wiederhole dies für alle anderen Plattformen im Spielfenster. Wo "Ground" auf unserem Hauptcharakter-Sprite-Objekt steht, wähle auch die Grundebene.

Wir haben das Player-Skript angewiesen, eine Überprüfung durchzuführen. Wenn sich der kleine Punkt auf dem Bildschirm mit dem der Ebene überlappt, springt der Charakter nur, wenn dies der Fall ist.

Spiel über Kollision und Spielmenü

Um alles zusammenzufassen, sind die letzten Dinge, die wir machen wollen, A: Kollision mit Hindernissen, die zu einem Spiel führen, und B: Erstellen Sie ein Spiel über den Menübildschirm mit einer Schaltfläche zum Wiedergeben.

Was Sie im Grunde tun möchten, ist:

  1. Fügen Sie ein Player- Objekt hinzu und weisen Sie ihm einen Starrkörper und einen Collider Ihrer Wahl zu.
  2. Füge ein Feindobjekt hinzu und weise ihm einen Starrkörper und einen Beschleuniger deiner Wahl zu. (und optional, fügen Sie ein Enemy-Tag hinzu )
  3. Erstellen Sie ein neues C # -Skript und fügen Sie es als Komponente zu Player hinzu (oder verwenden Sie ein Skript, das an den Player angehängt ist. Sie müssen kein neues Skript erstellen, wenn Sie bereits eines haben)
  4. Fügen Sie das in Ihrem Skript hinzu:
 void OnCollisionEnter (Collision coll) {Debug.Log ("Kollision"); // Prüfe, ob es sogar eine Kollision registriert, wenn es funktioniert, kannst du diese Zeile entfernen if (coll.gameobject.tag == "Feind") { // sieht, ob das Objekt, mit dem dein Spieler kollidiert ist, ein Tag namens "Feind ", kann dies durch if (coll.gameobject.name == ... ersetzt werden, aber die Verwendung eines Tags ist eine einfache Möglichkeit, dies zu tun. // Fügen Sie hier Ihren Code hinzu, wie: Application.LoadLevel (" GameOver "); Debug .Log ("Arbeiten"); // Wenn Sie arbeiten, können Sie diese Zeile entfernen. } 

Spielen Sie mit diesem Beispielskript herum - mit etwas Versuch und Irrtum erhalten Sie genau das, was wir brauchen.

Um zu sehen, wie man eine GameOver-Ebene mit einer Schaltfläche "Play" erstellt, lesen Sie den letzten Abschnitt des Handbuchs "Wie erstelle ich ein Basis-Unity-Plattform-Spiel?". 2.

PRO TIPP: Wenn das Problem bei Ihrem Computer oder Laptop / Notebook auftritt, sollten Sie versuchen, die Reimage Plus Software zu verwenden, die die Repositories durchsuchen und beschädigte und fehlende Dateien ersetzen kann. Dies funktioniert in den meisten Fällen, in denen das Problem aufgrund einer Systembeschädigung auftritt. Sie können Reimage Plus herunterladen, indem Sie hier klicken

Facebook Twitter Google Plus Pinterest