So erstellen Sie ein einfaches Android-Spiel mit Unity

In einem Tutorial einer früheren Appual mit dem Titel “So erstellen Sie ein einfaches Unity-Plattformspiel” (und sein Teil 2)Wir haben Unity und das integrierte WebGL-Plug-In verwendet, um ein einfaches HTML5-basiertes Browsergame zu erstellen – – In diesem ähnlichen Tutorial erfahren Sie, wie Sie ein Basic erstellen Android Spiel mit Unity.

Bedarf:

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 die 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 Bedienfelder, mit denen Sie sich vertraut machen müssen – das Hierarchiebedienfeld, das alle unsere Szenenelemente enthält (Szene = welche „Ebene“ Sie gerade bearbeiten). Dann gibt es die Registerkarte Spiel, auf der Sie Ihr Spiel im Editor spielen / testen können. Rechts befindet sich das Inspektorfenster, in dem Sie verschiedene Dinge wie Beleuchtung, Physik usw. bearbeiten können.

Das erste, was wir tun möchten, ist ein Sprite zu erstellen – dies wird unser Hauptcharakter sein (den wir kontrollieren). Sie können entweder Ihr eigenes Sprite zeichnen, z. B. ein Quadrat mit den Augen zeichnen, oder Sie können ein Sprite aus dem Internet abrufen – stellen Sie einfach sicher, dass es sich um eine PNG-Datei handelt (transparenter Hintergrund).

Ziehen Sie Ihr Sprite per Drag & Drop auf das Hauptszenenfenster (das größte Fenster). Es wird auch im Hierarchiefenster links angezeigt.

Jetzt erstellen wir einige Plattformen – dies können einfache Quadrate sein, da wir die Größe leicht ändern können, um Wände und andere Plattformen zu erstellen.

Erstellen Sie einfach ein neues quadratisches „Sprite“ und ziehen Sie es per Drag & Drop in das Szenenfenster, wie Sie es mit Ihrem Sprite-Charakter getan haben.

Jetzt müssen wir Unity anweisen, unserem Hauptcharakter Physik zu geben – klicken Sie auf Ihren Haupt-Sprite-Charakter (er sollte im Szenenfenster blau hervorgehoben werden) und suchen Sie dann im Inspektorfenster nach „GameObjects“.

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

Wir möchten verhindern, dass sich das Haupt-Sprite-Zeichen außer Kontrolle dreht. Suchen Sie daher im Inspektorfenster die Registerkarte Einschränkungen (wobei das Haupt-Sprite im Szenenfenster noch hervorgehoben ist) und aktivieren Sie das Kontrollkästchen für „Rotation Z einfrieren“.

Wenn Sie auf die Schaltfläche “Spielen” klicken, sollte Ihr Haupt-Sprite-Charakter vom Himmel fallen und endlos fallen – wir werden uns später darum kümmern, aber beachten Sie, wie einfach es war, Physik anzuwenden. Die Physik, die wir angewendet haben, hängt von der Form ab, auf die sie angewendet werden. Wenn Sie also dieselbe Physik beispielsweise auf eine Kugel anwenden, rollt sie herum.

Wir möchten auch unsere Ausrichtung korrigieren, um zu verhindern, dass sich der Charakter dreht und frei herumläuft. Suchen Sie im Inspektor nach ‘Einschränkungen’, während der Spieler ausgewählt ist, und aktivieren Sie das Kontrollkästchen, um die Rotation Z einzufrieren. Klicken Sie nun erneut auf Wiedergabe, und Sie sollten feststellen, dass Ihr Spieler jetzt vom Himmel in sein unendliches Schicksal fällt.

Um zu verhindern, dass unser Haupt-Sprite-Charakter endlos fällt, müssen wir einen Collider hinzufügen. Dies ist im Grunde nur der feste Umriss einer Form, die wir dem Haupt-Sprite-Charakter hinzufügen werden. Markieren Sie Ihren Sprite-Hauptcharakter und klicken Sie auf „Komponente hinzufügen> Physik 2D> BoxCollider2D.

Machen Sie jetzt genau dasselbe mit der Plattform, die Sie zuvor erstellt haben. Ihr Haupt-Sprite-Charakter sollte jetzt mit der Plattform „kollidieren“ und dort bleiben.

Jetzt wollen wir sicherstellen, dass die Kamera Ihrem Haupt-Sprite-Charakter folgt – innerhalb der Szene sollte sich bereits ein Kameraobjekt befinden. Sie möchten dies ziehen auf der Haupt-Sprite-Charakter.

Dies ist besonders wichtig, wenn Sie eine erstellen 3D-basierter Läufer, etwas wie Steigung Hier muss die Kamera ständig hinter dem primären Spielobjekt (Ihrem Haupt-Sprite-Charakter) bleiben.

Gehen Sie nun zum Hierarchiefenster und in der Liste der GameObjects möchten Sie die Kamera ziehen unterhalb der Haupt-Sprite-Charakter (Player GameObject). Dadurch wird der Haupt-Sprite-Charakter zum ‘Elternteil’ der Kamera. Wenn sich das Player GameObject auf dem Bildschirm bewegt, sollte die Kamera folgen.

Für dieses Spiel-Tutorial erstellen wir einfach ein einfaches Endlos-Runner-Spiel, so etwas wie Führen Sie 3 aus, wo Ihr Hauptcharakter über den Bildschirm läuft und Hindernissen ausweicht (oder „Spiel vorbei“, wenn Sie auf ein Hindernis stoßen “. Dies erfordert einige Skripte, von denen die meisten in diesem Handbuch bereitgestellt werden.

Klicken Sie mit der rechten Maustaste auf den Ordner “Assets” und erstellen Sie einen neuen Ordner – benennen Sie ihn Skripte. Klicken Sie nun mit der rechten Maustaste auf diesen neuen Ordner und klicken Sie auf “Erstellen> C # -Skript” und benennen Sie ihn PlayerControls. Dieses Skript wird das Verhalten unseres Haupt-Sprite-Charakters definieren.

Wenn Sie auf dieses neue Skript doppelklicken, wird es angezeigt sollte Öffnen Sie in Visual Studio – alternativ (und nach meiner persönlichen Präferenz) können Sie es in so etwas wie NotePad ++ bearbeiten.

Die Skriptdatei sollte bereits ein bisschen “Boiler Plate” -Code enthalten – im Grunde ist dies ein Skript, das in Ruhe gelassen oder nur an Ihre Bedürfnisse angepasst werden muss und uns viel Zeit spart. Also werden wir ein neues Objekt hinzufügen.

Oberhalb der Zeile void Start ():

Öffentlichkeit Rigidbody2D rb;

Das nächste Stück Code, das wir hinzufügen müssen, befindet sich in Start () und wird verwendet, um den starren Körper zu finden. Im Grunde weisen wir Unity an, die Physik zu lokalisieren, die wir den GameObjects (unserem Haupt-Sprite-Charakter) und Start zugeordnet haben () wird ausgeführt, wenn ein neues Objekt oder Skript erstellt wird.

Suchen Sie als nächstes das Physikobjekt.

rb = GetComponent<Rigidbody2D>();

Und Sie werden diese Zeile im Update () hinzufügen

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

Update () wird ständig aktualisiert, sodass der dort hinzugefügte Code kontinuierlich ausgeführt wird (es sei denn, das Objekt wird zerstört). Wir weisen das Skript also an, dass der starre Körper einen neuen Vektor mit derselben Geschwindigkeit auf der Y-Achse (rb.velocity.y), jedoch mit einer Geschwindigkeit von 3 auf der horizontalen Achse haben soll. In Zukunft können Sie auch ‘FixedUpdate () ‘ Das ist ähnlich, aber unterschiedlich, da Sie dort die Aktualisierungs- / Aktualisierungsmenge des Skripts steuern können.

Speichern Sie das Skript und kehren Sie zu Unity zurück. Klicken Sie dann auf Ihr Haupt-Sprite-Zeichen, um es hervorzuheben. Gehen Sie im Inspektorfenster zu Komponente hinzufügen> Skripte und fügen Sie das gerade gespeicherte Skript hinzu. Wenn Sie nun auf die Schaltfläche “Abspielen” klicken, sollte sich der Haupt-Sprite-Charakter kontinuierlich zur Plattformkante bewegen.

Erstellen von Player-Eingabesteuerelementen

Da dies ein endloses Spiel im Runner-Stil mit Hindernissen ist, müssen wir dem Spieler Steuerelemente hinzufügen, z. B. eine Sprungtaste.

Öffnen Sie das Skript erneut, und wir werden diesen zusätzlichen Code hinzufügen:

if (Input.GetMouseButtonDown(0))  {

         rb.velocity = new Vector2(rb.velocity.x, 5);

         }

Sie werden das in die Update () -Methode einfügen, und im Grunde sagt es Unity, dass der Haupt-Sprite-Charakter “springt”, wenn der Spieler auf seine Maustaste klickt (was auf Android als Bildschirmtippen übersetzt wird) ” in der Luft. Dies liegt daran, dass wir auf der Y-Achse eine Geschwindigkeit mit einem Wert von 5 hinzugefügt haben (ein höherer Wert würde natürlich einen höheren Sprung bedeuten).

Wenn Sie mit Codierung nicht allzu vertraut sind, haben wir eine verwendet Wenn Aussage weil Wenn ist im Grunde eine Art “Do or Don’t” -Anweisung – es heißt wörtlich Wenn dies passiert, führen Sie diesen Befehl aus. Wenn der Player also nicht mit der Maus klickt (oder auf den Android-Bildschirm tippt), wird das Skript offensichtlich nicht ausgeführt.

Klicken Sie auf die Schaltfläche „Wiedergabe“ und stellen Sie sicher, dass sie ordnungsgemäß funktioniert, bevor Sie fortfahren.

Als nächstes werden wir unsere Hindernisse (die das Sprite des Hauptcharakters “zerstören” können), eine Spielpunktzahl und ein “Game Over” -Menü hinzufügen.

Wenn Sie das Spiel bisher getestet haben, besteht das einzige Problem, das wir bisher haben, darin, dass das Drücken des von uns erstellten “Sprung” -Knopfes den Charakter springt, egal ob er geerdet ist oder nicht – dies ist im Grunde Flappy Birds und kein Läufer wie wir wollen. Aber wir werden das beheben.

Fügen Sie im Skript dieses Codebit hinzu über die Update () -Methode:

public Transform groundCheck;

public Transform startPosition;

public float groundCheckRadius;

public LayerMask whatIsGround;

private bool onGround;

And then add this next line to the Update method above the if statement:

onGround = Physics2D.OverlapCircle(groundCheck.position, groundCheckRadius, whatIsGround);

And next you will change this following line to include “&& onGround”

if (Input.GetMouseButtonDown(0) && onGround) {

So our entire script should basically look like this:

public class PlayerControls : MonoBehaviour

 {

     public Rigidbody2D rb;

     public Transform groundCheck;

     public Transform startPosition;

     public float groundCheckRadius;

     public LayerMask whatIsGround;

     private bool onGround;




void Start() {

     rb = GetComponent<Rigidbody2D>();

     }




    void Update() {

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

         onGround = Physics2D.OverlapCircle(groundCheck.position, groundCheckRadius, whatIsGround);       

         if (Input.GetMouseButtonDown(0) && onGround) {

                 rb.velocity = new 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 weisen Unity an, zu überprüfen, ob sich der Radius mit unserer „Boden“ -Ebene überlappt. Wenn also unser Radius mit dem „Boden“ synchronisiert ist, sollte unser Charakter springen können und wenn wir Sind schon von einem Sprung in der Luft, sollten wir nicht wieder springen können. Grundsätzlich, auf dem Boden wird wahr sein wenn die Transformation namens Bodenprüfung überlappt sich mit der Grundschicht. Hoffentlich macht das Sinn.

Speichern Sie das Skript und kehren Sie zu Unity zurück. Sie werden feststellen, dass dem Inspektor nach dem Hervorheben des Players 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, erstellen Sie ein neues leeres Objekt und ziehen Sie es so, dass es unter dem Sprite der Hauptfigur im Hauptszenenfenster 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 wie zuvor mit der Kamera unter das Spielobjekt des Spielers (um eine Eltern-Kind-Beziehung zwischen den Objekten herzustellen). Jetzt folgt das leere Objekt genau wie die Kamera dem Sprite der Hauptfigur und überprüft kontinuierlich die Bodenentfernung

Wählen Sie nun das Sprite der Hauptfigur aus und gehen Sie zum Inspektorfenster. Ziehen Sie das Objekt “Boden prüfen” in den Bereich “groundCheck”. Die ‘Transformations’-Position sollte gleich der Position dieses neuen Objekts sein und dort, wo “Radius” steht, 0,1 machen.

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

Wählen Sie nun “Boden” als Ebene für unsere Plattform und wiederholen Sie dies für alle anderen Plattformen im Spielfenster. Wählen Sie dort, wo auf unserem Sprite-Objekt der Hauptfigur „What is Ground“ steht, auch die Grundebene aus.

Wir haben das Player-Skript angewiesen, eine Überprüfung durchzuführen – wenn Der kleine Punkt auf dem Bildschirm überlappt sich mit allem, was mit der Ebene übereinstimmt. Der Charakter springt nur, wenn dies zutrifft.

Game Over auf Kollision und Spielmenü

Um alles zusammenzufassen, sind die letzten Dinge, die wir tun möchten, A: Wenn Kollisionen mit Hindernissen zu einem Spielende führen, und B: Erstellen Sie einen Menübildschirm „Spiel vorbei“ mit einer Schaltfläche zum erneuten Spielen.

Was Sie grundsätzlich tun möchten, ist:

  1. Füge hinzu ein Spieler Objekt und zuweisen a starrer Körper und ein Collider Ihrer Wahl dazu.
  2. Fügen Sie eine hinzu Feind Objekt und zuweisen a starrer Körper und ein Collider von Ihrer Wahl dazu. (und optional hinzufügen “Feind” -Tag dazu)
  3. Erstelle eine neue C # -Skript und fügen Sie es als Komponente hinzu Spieler (oder verwenden Sie ein Skript, das an den Player angehängt ist. Sie müssen kein neues erstellen, wenn Sie bereits eines haben.)
  4. Fügen Sie dies in Ihr Skript ein:
void OnCollisionEnter(Collision coll){

           Debug.Log("Collision"); //Check to see if it even registers a collision, if it works you can remove this line

           if(coll.gameobject.tag == "Enemy"){ //sees if the object your player collided with has a tag called "Enemy", this can be replaced with if(coll.gameobject.name == ... but using a tag is an easy way to do it.

                    //Add your code here, like:

                    Application.LoadLevel("GameOver");

                    Debug.Log("Working");  //if working, you can remove this line.

           }

Spielen Sie mit diesem Beispielskript herum – mit ein wenig Versuch und Irrtum werden Sie es dazu bringen, genau das zu tun, was wir brauchen.

Um genau zu sehen, wie Sie mit einer Play-Schaltfläche ein GameOver-Level erstellen, lesen Sie den letzten Abschnitt des Appual-Handbuchs „So erstellen Sie ein Basic Unity Platform-Spiel Pt. 2 ”.

Similar Posts

Leave a Reply

Your email address will not be published.