Erstelle ein Space Invaders-Spiel in Corona: Beende das Gameplay

Im vorherigen Teil dieser Serie haben wir das Schiff des Spielers bewegt, die Eindringlinge bewegt und festgestellt, wann ein Spielerball einen Eindringling getroffen hat. In diesem letzten Teil der Serie greifen die Angreifer den Spieler an, verwalten die Level und fügen dem Spieler die Möglichkeit hinzu, zu sterben.

1. Kugeln abschießen

Hin und wieder feuert einer der Invasoren eine Kugel ab. Wir werden eine verwenden Timer um das zu erreichen. Fügen Sie den folgenden Code hinzu gamelevel.lua.

In dieser Funktion prüfen wir zunächst, ob die invadersWhoCanFire Tabelle enthält mindestens ein Element. In diesem Fall führen wir den Code in der if-Anweisung aus. Andernfalls bedeutet dies, dass das Level beendet ist und wir das aufrufen levelComplete Funktion.

Es wird immer mindestens einen Eindringling geben, der eine Kugel abfeuern kann, bis Sie den letzten Eindringling töten invadersWhoCanFire Die Tabelle wird leer sein.

Innerhalb der if-Anweisung generieren wir eine Zufallszahl randomIndex nach der Anzahl der Artikel in der invadersWhoCanFire Tabelle. Wir wählen dann diesen Artikel, randomInvader, von invadersWhoCanFire Tabelle.

Wir erstellen ein Aufzählungsbild, geben es ein name Eigenschaft, damit wir sie später identifizieren, in die Szene einfügen und dieselben Eigenschaften wie auf dem Player-Chip festlegen können. Zum Schluss setzen wir den Ball in die ein invaderBullets Tabelle, damit wir später darauf verweisen können.

Jetzt müssen wir den Timer konfigurieren. Fügen Sie Folgendes hinzu: scene:show Methode.

Alle 1500 Millisekunden fireInvaderBullet wird aufgerufen. Beachten Sie, dass der letzte Parameter, den wir übergeben, ist -1Dies bedeutet, dass sich der Timer auf unbestimmte Zeit wiederholt. Jedes Mal, wenn Sie einen Timer erstellen, der sich auf unbestimmte Zeit wiederholt, müssen Sie ihn möglicherweise abbrechen. Wir machen das in der scene:hide Funktion wie unten gezeigt.

2. Kugeln entfernen

Wie die Bälle des Spielers bewegen sich die Bälle des Eindringlings außerhalb des Bildschirms und bleiben in Bewegung, wodurch wertvolles Gedächtnis beansprucht wird. Um dies zu beheben, entfernen wir sie wie bei Spielerbällen.

Dieser Code ist sehr ähnlich zu der Überprüfung, ob die Bälle des Spielers außerhalb der Grenzen liegen, daher werde ich seine Implementierung nicht im Detail diskutieren.

3. Erkennen Sie einen Treffer

Schritt 1: Kollisionserkennung

Der nächste Schritt besteht darin, festzustellen, ob der Ball eines Eindringlings den Spieler getroffen hat. Fügen Sie dem folgenden Code hinzu onCollision Funktion.

Nach wie vor wissen wir nicht, welches Objekt event.object1 und event.object2 Wir werden also zwei if-Anweisungen verwenden, um nach beiden Situationen zu suchen. Wir entfernen die Kugel vom Eindringling aus dem invaderBullets Tabelle, entfernen Sie es vom Bildschirm und setzen Sie es auf nil. Wenn der Spieler nicht unbesiegbar ist, töten wir ihn.

verbunden :  Sie können Ihr Telefon jetzt als Sicherheitsschlüssel verwenden

Schritt 2: Töte den Spieler

Wenn wir den Spieler töten, gewähren wir ihm eine kurze Unbesiegbarkeitsperiode. Dies gibt dem Benutzer Zeit, sich auf das Spiel zu konzentrieren. numberOfLives Die Variable ist gleich Wir wissen, dass das Spiel vorbei ist und der Übergang zum Start Szene, in der der Benutzer ein neues Spiel starten kann.

Schritt 3: Erstellen Sie einen neuen Spieler

Das spawnNewPlayer Die Funktion lässt den Leser einige Sekunden lang erscheinen und verschwinden. Es ist ein guter Effekt, den Benutzer wissen zu lassen, dass das Schiff vorübergehend unbesiegbar ist.

Wir verwenden eine lokale Funktion, fadePlayer, die die verwendet Überleitung Bibliothek zum Ändern der alpha Wert der player. Wir verfolgen die Anzahl der Male player verblasste und platzierte die Unbesiegbarkeit des Spielers auf false Sobald wir die erreichen numberOfTimesToFadePlayer. Wir verwenden einen Timer, um die aufzurufen fadePlayer so oft laufen numberOfTimesToFadePlayer entspricht.

Führen Sie das Spiel aus, um dies zu testen. Das player sollte sterben, wenn eine Kugel eines Eindringlings das Schiff trifft. Wenn drei Kugeln das Schiff treffen, sollten Sie zum gebracht werden Start Szene, in der Sie ein neues Spiel starten können.

Kommentieren Sie den Anruf an, um den Test zu erleichtern moveInvaders in dem gameLoop Funktion wie unten gezeigt.

4. Schließe ein Level ab

Wenn Sie es geschafft hätten, alle Invasoren zu töten, hätte das Spiel das aufgerufen levelComplete Funktion, die noch nicht existiert. Lassen Sie uns das beheben. Fügen Sie den folgenden Codeblock hinzu.

Wir erhöhen gameData.invaderNum und wenn es kleiner ist als gameData.maxLevels, wir gehen zu Spiel ist aus Szene. Ansonsten hat der Spieler alle Level abgeschlossen und wir setzen zurück gameData.invaderNum beim 1. Wir gehen weiter zu Start Szene, in der der Spieler ein neues Spiel starten kann.

Eine einfache Möglichkeit, dies zu testen, besteht darin, den Anruf an zu kommentieren moveInvaders in dem gameLoop Funktion und verwenden Sie die Tasten, um das Schiff zu bewegen. Wenn es immer noch zu schwierig ist, können Sie auch beide Anrufe an kommentieren killPlayer in dem onCollision Methode.

5. Spiel ist aus

Fügen Sie den folgenden Code hinzu gameover.lua das Spiel auf der Bühne umzusetzen.

verbunden :  Streaming diese Woche: Space Force, Ramy und Hannah Gadsby: Douglas

Dieser Code ist sehr ähnlich zu Start Szene, so sollten Sie jetzt damit vertraut sein.

6. Kollision mit einem Eindringling

Die letzte Kollisionsprüfung, die wir durchführen müssen, ist eine Kollision zwischen dem Spieler und einem der Angreifer. Fügen Sie dem folgenden Codeblock hinzu onCollision Methode, die wir früher gesehen haben.

Wie üblich müssen wir die beiden Kollisionssituationen überprüfen. Wir definieren die numberOfLives beim und Ruf an killPlayer. Durch die Definition numberOfLives beim 0 und anrufen killPlayerist das Spiel vorbei und das Spiel geht zu Start Szene.

7. Mehr Funktionen

Damit ist unser Spiel beendet, aber ich schlage vor, dass Sie versuchen, das Spiel um einige weitere Funktionen zu erweitern. Sie können beispielsweise das Leben des Spielers in einem HUD anzeigen.

Ich habe auch eine UFO-Grafik in die Quelldateien aufgenommen. Sie können versuchen, ein UFO zufällig zu spawnen. Wenn der Spieler es mit einer Kugel trifft, geben Sie ihm ein zusätzliches Leben.

Wenn Sie Hilfe bei diesen Konzepten benötigen, schauen Sie sich meine Flugzeugkampfspielserie auf Tuts + an.

Fazit

Wenn Sie mit dieser Serie Schritt gehalten haben, sollten Sie jetzt ein voll funktionsfähiges Spiel haben, das den ursprünglichen Space Invaders ähnelt. Entwickeln Sie es und personalisieren Sie es. Ich hoffe, Sie fanden dieses Tutorial hilfreich und haben einige neue Techniken gelernt. Danke fürs Lesen.

Moyens Staff
Moyens I/O-Personal. motivierte Sie und gab Ratschläge zu Technologie, persönlicher Entwicklung, Lebensstil und Strategien, die Ihnen helfen werden.
We would like to show you notifications for the latest news and updates.
Dismiss
Allow Notifications