Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Games

Erstellen Sie in weniger als einer Stunde einen physikbasierten Plattformer

by
Read Time:18 minsLanguages:

German (Deutsch) translation by Nikol Angelowa (you can also view the original English article)

In diesem Tutorial lernen Sie, wie Sie mit dem World Construction Kit so schnell wie möglich ein physikbasiertes Plattformspiel erstellen.


Vorschau des Endergebnisses

Werfen wir einen Blick auf das Endergebnis, auf das wir hinarbeiten werden:

Es ist ein bisschen wackelig, aber das kann behoben werden - und warten Sie, bis Sie sehen, wie schnell und einfach es war!


Schritt 1: Herunterladen

Laden Sie die Box2D Alchemy Port- und WCK-Bibliotheken herunter. Holen Sie sich die Quelle von Github und weitere Informationen finden Sie unter www.sideroller.com.


Schritt 2: Neues FlashDevelop-Projekt

Klicken Sie auf "Projekt" und wählen Sie "Neues Projekt" aus der Liste. Wählen Sie AS3-Projekt als Projektvorlage aus, benennen Sie Ihr Projekt, zeigen Sie es auf ein leeres Verzeichnis und klicken Sie auf OK.

Suchen Sie die Box2D/WCK-Bibliotheken, die Sie in Schritt 1 heruntergeladen haben, und legen Sie die folgenden Ordner im Ordner "lib" Ihres neuen Projekts ab: Box2D, Box2DAS, extras, gravity, misc, shapes und wck.

Klicken Sie erneut auf "Projekt" und wählen Sie Eigenschaften. Klicken Sie auf die Registerkarte "Klassenpfade" und fügen Sie Ihren lib-Ordner hinzu.

Öffnen Sie Main.as in der Quelldatei und fügen Sie den markierten Code hinzu. FlashDevelop sollte den Rest automatisch generiert haben.


Schritt 3: Richten Sie die Flash-IDE ein

Öffnen Sie Flash Professional. Drücken Sie Strg + Umschalt + F12, um die Veröffentlichungseinstellungen zu öffnen. Klicken Sie auf die Registerkarte Flash. Wählen Sie die Option "SWC exportieren"

Flash physics platformer WCK Box2DFlash physics platformer WCK Box2DFlash physics platformer WCK Box2D

....und klicken Sie dann auf die Schaltfläche Einstellungen neben der ActionScript 3.0-Combobox.

Flash physics platformer WCK Box2DFlash physics platformer WCK Box2DFlash physics platformer WCK Box2D

Klicken Sie auf der Registerkarte Quellpfad auf das Symbol "Zum Pfad navigieren" und wählen Sie Ihren lib-Ordner aus. Klicken Sie dann auf die Registerkarte Bibliothekspfad und wählen Sie das Symbol "Zu SWC navigieren". Wählen Sie die Datei lib/Box2DAS/Box2D.swc aus.

Klicken Sie in den Einstellungen für Advanced Actionscript 3 auf OK und erneut im Fenster Einstellungen veröffentlichen. Speichern Sie Ihre FLA im Ordner \src\ Ihres FlashDevelop-Projekts (derselbe Ordner wie Main.as).

Drücken Sie abschließend Strg + F3, um die Dokumenteigenschaften zu öffnen und die Dokumentklasse auf Main zu setzen.


Schritt 4: Ihr erstes Weltobjekt

Beginnen Sie mit dem Rechteck-Werkzeug, um ein Rechteck auf der Bühne zu zeichnen.

Konvertieren Sie das Rechteck in ein Symbol, indem Sie es auswählen und F8 drücken.

Flash physics platformer WCK Box2DFlash physics platformer WCK Box2DFlash physics platformer WCK Box2D

Stellen Sie den Registrierungspunkt auf die Mitte. *Hinweis: Es ist sehr wichtig, dass Sie alle Spielsymbole auf diese Weise registrieren. Andernfalls wirkt sich dies darauf aus, wie Ihr Objekt auf Schwerkraft und Kollisionen reagiert.

Klicken Sie auf "Für Actionscript exportieren" und setzen Sie die Basisklasse auf shapes.Box


Schritt 5: Erschaffe die Welt

Dies mag kontraintuitiv erscheinen, dass Sie ein Weltobjekt erstellt haben, bevor Sie Ihre Welt erstellt haben. Sie könnten es so oder so machen, aber Sie werden sehen, dass es schneller so geht.

Wählen Sie Ihr Static Box-Objekt auf der Bühne aus und drücken Sie F8.

Flash physics platformer WCK Box2DFlash physics platformer WCK Box2DFlash physics platformer WCK Box2D

Setzen Sie wie bei der statischen Box den Registrierungspunkt der Welt auf die Mitte und aktivieren Sie Exportieren für ActionScript.

Setzen Sie die Basisklasse auf wck.World


Schritt 6: Definieren Sie die Weltkomponente

Klicken Sie mit der rechten Maustaste auf Ihr neu erstelltes Weltsymbol in der Bibliothek.

Wählen Sie "Komponentendefinition..."

Geben Sie im Feld Klasse wck.World ein

Flash physics platformer WCK Box2DFlash physics platformer WCK Box2DFlash physics platformer WCK Box2D

Dies ist ein wichtiges Verkaufsargument für das World Construction Kit. Wenn Sie jetzt auf der Bühne auf das World-Objekt klicken und das Eigenschaftenfenster durch Drücken von Strg + F3 öffnen, können Sie eine Reihe der überprüfbaren Eigenschaften der World-Komponente unter der Überschrift "Komponentenparameter" bearbeiten.

Flash physics platformer WCK Box2D

Schritt 7: Statische Objektkomponente definieren

Ok, jetzt machen wir dasselbe mit unserem statischen Objekt.

Klicken Sie mit der rechten Maustaste auf Ihr Static Box-Symbol in der Bibliothek.

Wählen Sie "Komponentendefinition..."

Geben Sie im Feld Klasse wck.BodyShape ein

Öffnen Sie das Eigenschaftenfenster, indem Sie das Static Box-Objekt auf der Bühne auswählen und Strg + F3 drücken.

Scrollen Sie im Fenster Komponentenparameter nach unten und ändern Sie den Typ von dynamisch in statisch. Wenn Sie dies vergessen, werden Ihre statischen Komponenten (Wände, Böden, Plattformen) der Schwerkraft ausgesetzt und fallen zur Laufzeit vom Bildschirm.


Schritt 8: Bauen Sie den Boden und die Wände

Wählen Sie Ihr statisches Objekt innerhalb der Welt aus. Kopieren Sie es und fügen Sie es ein paar Mal ein.

Wählen Sie jede Instanz des statischen Objekts aus und strecken, neigen und verschieben Sie Ihre statischen Objekte mithilfe der freien Transformation, um Wände und einen Boden zu bilden. Sie müssen die Grenzen nicht auf der Bühne halten.

Hier ist ein Beispiel für einen meiner Versuche:

Flash physics platformer WCK Box2DFlash physics platformer WCK Box2DFlash physics platformer WCK Box2D

Es ist klar, dass "Künstler sein" keine Voraussetzung für dieses Tutorial ist.


Schritt 9: Bauen Sie Ihren Helden!

Was ist ein guter Plattformer ohne einen überzeugenden Protagonisten?

Zeichnen Sie im Inneren des Weltobjekts ein Rechteck. Fühlen Sie sich frei, hier kreativ zu werden. Dies ist das Beste, was ich tun konnte:

Flash physics platformer WCK Box2D

Wandle deinen Charakter in ein Symbol um, aber deklariere noch keine Basisklasse.

Klicken Sie mit der rechten Maustaste auf Ihr neues Helden-Symbol in der Bibliothek.

Wählen Sie "Komponentendefinition..."

Geben Sie im Feld Klasse wck.BodyShape ein


Schritt 10: Erstellen Sie die Spielerklasse

Öffnen Sie FlashDevelop.

Stellen Sie sicher, dass Ihr Projekt geöffnet ist. Erstellen Sie im Ordner \src\ einen neuen Ordner mit dem Namen "View". Erstellen Sie in "Ansicht" einen neuen Ordner mit dem Namen "Characters".

Klicken Sie mit der rechten Maustaste auf "View" und fügen Sie eine neue Klasse hinzu.

Nennen Sie Ihre Klasse so etwas wie HeroCharacter.as und setzen Sie die Basisklasse auf shapes.Box.

Flash physics platformer WCK Box2DFlash physics platformer WCK Box2DFlash physics platformer WCK Box2D

Ihre Ordnerstruktur sollte nun folgendermaßen aussehen:

Flash physics platformer WCK Box2D

Schritt 11: Überschreiben Sie die Erstellungsmethode

Dies ist der Einstiegspunkt, um Ihren Charakteren Funktionen hinzuzufügen.

Fügen Sie unserer neuen Klasse den folgenden Code hinzu:

Indem Sie reportBeginContact und reportEndContact auf true setzen, legen wir Eigenschaften für die BodyShape-Klasse fest. Wir weisen darauf hin, dass die BodyShape ContactEvents versenden soll, wenn Kollisionen beginnen und wenn Kollisionen enden. Wir instanziieren dann eine ContactList und bitten sie, "listenTo this". ContactList.listenTo(this) erstellt Listener für ContactEvent.BEGIN_CONTACT und ContactEvent.END_CONTACT. Anschließend werden für jeden Handler erstellt, in denen die Kollisionsinformationen gespeichert sind. Sie können dies alles sehen, indem Sie den Cursor auf ContactList setzen und in FlashDevelop Strg + F4 drücken.

Indem wir fixedRotation auf true setzen, stellen wir sicher, dass sich unser Held bei Kollisionen mit Objekten nicht vorwärts oder rückwärts dreht.

listenWhileVisible ist eine weitere Möglichkeit, Ereignis-Listener hinzuzufügen. Wir hätten addEventListener(StepEvent.STEP, parseInput, false, 0, true); verwenden können. Die zusätzliche Funktionalität hier ist jedoch, dass listenWhileVisible die Ereignis-Listener entfernt und sie für die Speicherbereinigung bestimmt, wenn die Entity aus dem Spiel entfernt wurde. Für unsere Zwecke ist listenWhileVisible eine optimierte Version von addEventListener. *Hinweis: Verwenden Sie wie bei addEventListener immer schwache Referenzen, damit nicht verwendete Objekte für die Speicherbereinigung in Frage kommen.

Mit super.create() rufen wir die create()-Methode in BodyShape auf. Auf diese Weise können wir die Funktionalität der create()-Methode erweitern, anstatt sie zu ersetzen.


Schritt 12: Behandeln Sie die Player-Eingabe

Beginnen wir mit der Erstellung unseres StepEvent-Handlers für die Spielereingabe.

In jedem Zeitintervall wird ein StepEvent aus der b2World-Klasse in Box2D ausgelöst. Der Standardzeitschritt beträgt 0,05 Sekunden. Sie können den timeStep-Parameter einfach ändern, indem Sie zu Flash Professional zurückkehren und die World-Komponentenparameter öffnen.

Als Nächstes verwenden wir das Dienstprogramm Eingabe, um zu bestimmen, welche Tasten derzeit vom Benutzer gedrückt werden.

Die Input.kd-Methode kann mehrere Argumente akzeptieren. Wenn wir dem Benutzer ermöglichen möchten, den HeroCharacter mit WASD und der Leertaste zu steuern, können wir den Code wie folgt ändern:

Input.kd() lauscht, wenn eine Taste gedrückt ist, während Input.kp() den Moment lauscht, in dem eine Taste gedrückt wird.


Schritt 13: Wenden Sie einen Impuls an, um den Player zu bewegen

Wenn ein Impuls auf einen starren Körper ausgeübt wird, ändert sich der Impuls des Körpers. Der Impuls ist das Produkt aus Masse und Geschwindigkeit. Wenn wir also die Geschwindigkeit (Geschwindigkeit und Richtung) unseres Players ändern möchten, verwenden wir auf b2body eine Methode namens ApplyImpulse().

ApplyImpulse() akzeptiert zwei Parameter: den Weltimpulsvektor und den Anwendungspunkt des Impulses. Im Moment übergeben wir einen neuen 2D-Vektor als ersten Parameter für das Springen, indem wir uns nach links und rechts bewegen (wir müssen etwas später anpassen, wie wir mit dem Springen umgehen). Der zweite Parameter für jede ApplyImpulse-Methode ist b2body.GetWorldCenter(). Diese Methode gibt die Weltposition der Mittelmasse unseres Helden zurück. Dies ist wichtig, da ApplyImpulse die Winkelgeschwindigkeit unseres Helden ändert, wenn sie nicht auf seine Mittenmasse einwirkt (aus diesem Grund haben wir auch die Mittenregistrierung für den Helden in Flash verwendet).


Schritt 14: Umgang mit normaler Kraft

Gehen Sie zurück zu Flash Professional und setzen Sie die Klasse des Helden-Symbols auf "view.characters.HeroCharacter" und lassen Sie die Basisklasse leer. Setzen Sie als Nächstes den Instanznamen Ihrer Heldeninstanz auf "Hero".

Deaktivieren Sie in den Komponentenparametern der World-Komponente die Option "allowDragging" und wählen Sie "scrolling". Auf diese Weise kann der Benutzer Ihren Charakter nicht mit der Maus herumziehen und die Kamera folgt Ihrem Spieler, wenn er sich bewegt. Geben Sie schließlich im Feld "focusOn" "hero" ein, den Instanznamen Ihres Helden.

Drücken Sie Strg + Eingabetaste, um den Film zu testen. Sie werden feststellen, dass Sie Ihren Charakter durch Drücken von links und rechts bewegen und mit dem Leerzeichen springen können. Wenn Sie jedoch weiterhin die Leertaste drücken, springen Sie auf unbestimmte Zeit hoch.

Der Grund, warum wir nicht auf unbestimmte Zeit hochspringen können, ist, dass unsere Füße, sobald wir in der Luft sind, nichts mehr drücken können, um uns hochzustoßen. Es gibt keine gleiche Kraft zu unseren Füßen, die zurückschiebt. Wenn wir fest auf dem Boden stehen, wird die Kraft, die uns hilft, nach oben zu springen und uns davon abzuhalten, durch den Boden zu fallen, als normale Kraft bezeichnet. Was wir tun müssen, ist festzustellen, welche normale Kraft auf die Füße unserer Spieler ausgeübt wird. Wenn es keine normale Kraft gibt, kann er keinen Sprung machen. Wir werden das tun, indem wir unsere Kontaktliste verwenden.

Gehen Sie zurück zu FlashDevelop. Lassen Sie uns unseren Step Event Handler noch einmal ändern:

Wir werden den Code für die Methode getNormalForce() in nur einer Sekunde schreiben. Wir möchten hier nach Kontakten suchen (berührt unser Spieler etwas?) Holen Sie sich eine Mannigfaltigkeit, die beschreibt, wo unser Spieler einen Kontakt berührt (seitlich oder unten), und beschleunigen Sie den Spieler nach oben, wenn er Kontakt mit dem Boden hat. Wenn es keine Kontakte gibt, muss unser Held in der Luft sein. In diesem Fall wäre der Verteiler null und der Spieler könnte nicht springen.

Schreiben wir nun die Methode getNormalForce().

Bevor wir getNormalForce() aufrufen, prüfen wir, ob unser Player mit irgendetwas in Kontakt steht. Wenn nicht, dann wissen wir, dass er in der Luft ist. Der ganze Grund, warum diese Funktion existiert, besteht darin, den Spieler daran zu hindern, einen zweiten Sprung von einer Wand oder der Seite einer Plattform zu machen.

Zuerst deklarieren wir eine lokale Variable namens mainfold und setzen sie auf null. Dies ist der Parameter, den wir zurückgeben werden. Wenn der Heldencharakter mit etwas rechts links oder oben (aber nicht mit dem Boden) in Kontakt steht, gibt diese Funktion eine Null-Mannigfaltigkeit zurück.

Mit der Methode contacts.forEach() können wir jedes ContactEvent in unserer ContactList überprüfen. Alle ContactEvents verfügen über eine worldManifold-Eigenschaft. Also erstellen wir eine weitere lokale Variable namens tempManifold und setzen sie auf den Wert, der von jedem contactEvent.GetWorldManifold zurückgegeben wird. Als nächstes prüfen wir, ob temp.normal.y größer als Null ist. Hier fragen wir, gibt es eine Normalkraft auf der y-Achse?

Wenn sich der Held auf dem Boden oder auf einer Plattform befindet, setzen wir jede Normalkraft der x-Achse auf Null. Wenn Sie dies nicht tun, springt der Buggy, wenn der Spieler gegen eine Wand gedrückt wird. Fühlen Sie sich frei, damit zu experimentieren. Wenn Sie das x nicht auf Null setzen, erhält der Spieler eine coole (aber unzuverlässige) Art von Metroid-Wandsprung-Fähigkeit.

Reinigen Sie abschließend die Kontaktliste. Wir möchten nicht mehr als einmal mit denselben Kontakten umgehen.


Schritt 15: Münzen hinzufügen

Jetzt, da wir einen Protagonisten haben, der herumlaufen und springen kann, fügen wir einige Gegenstände hinzu, die er aufheben kann. Kehren Sie zu Flash Professional zurück, zeichnen Sie einen Kreis oder eine Ellipse für eine Münze und konvertieren Sie sie in ein Symbol. Stellen Sie die Klasse und die Basisklasse wie folgt ein:

Flash physics platformer WCK Box2DFlash physics platformer WCK Box2DFlash physics platformer WCK Box2D

Stellen Sie so viele Instanzen der Münzklasse auf die Bühne, wie Sie möchten. In den Komponentenparametern habe ich den Typ jeder Münze auf static gesetzt, damit sie nicht von der Schwerkraft beeinflusst werden und wie in Mario an Ort und Stelle schweben können, aber es liegt an Ihnen.


Schritt 16: Kollisionen mit Münzen behandeln

Im Moment sind die Münzen unbewegliche, statische Objekte. Das möchten wir ändern. Gehen Sie zurück zu FlashDevelop und öffnen Sie die HeroCharacter-Klasse. Fügen Sie einen Ereignishandler für Kollisionen wie diese hinzu:

Dies ist der Handler für den Listener, den wir in Schritt 11 erstellt haben. Fügen Sie den folgenden Code hinzu:

Zuerst erstellen wir eine lokale Variable namens coin, die vom gleichen Typ ist wie die Münzklasse, die Sie in Flash erstellt haben. ContactEvent verfolgt das andere an der Kollision beteiligte Box2D-Gerät. Wenn es sich um eine Münze handelt, entfernen wir sie von der Bühne und geben die Illusion, dass sie gesammelt wurde.


Schritt 17: Punktzahl halten

Erstellen Sie einen Ordner im Verzeichnis \src\ mit dem Namen "model". Erstellen Sie in "model" einen Ordner mit dem Namen "scoreboard" und eine neue Klasse mit dem Namen ScoreBoard, die EventDispatcher erweitert. Da wir immer nur eine Instanz der Anzeigetafel gleichzeitig haben möchten, folgen wir dem Singleton-Entwurfsmuster. Anfang dieses Jahres gab es einen kurzen Tipp zum Singleton-Muster auf Activetuts+, wenn Sie eine Referenz wünschen.

Schreiben Sie den folgenden Code in die ScoreBoard-Klasse:

Dies ist das Singleton-Muster. Wir erwarten, dass jede Klasse, die auf den ScoreKeeper zugreifen möchte, die statische Funktion getInstance() verwendet. Wenn bereits eine Instanz vorhanden ist und jemand (z. B. ein anderer Entwickler in Ihrem Team) versucht, den ScoreKeeper über seinen Konstruktor zu instanziieren, erhält er die Fehlermeldung, dass auf den ScoreKeeper nur über getInstance() zugegriffen werden soll.

Der ScoreKeeper erweitert EventDispatcher so, dass er Ereignisse auslösen kann, wenn sich die Punktzahl ändert. Wir werden eine Anzeigetafel als Ansichtskomponente erstellen, die die ScoreKeeper-Ereignisse abonniert.

Jetzt brauchen wir den ScoreKeeper, um tatsächlich mit dem Score zu beginnen. Wir benötigen eine Variable zum Speichern der Punktzahl, eine Methode zum Inkrementieren der Punktzahl, einen Getter für die Punktzahl, damit andere Klassen darauf zugreifen können, und eine public static const zum Speichern unseres Ereignistyps.

Und das ist alles, was wir für unseren ScoreKeeper brauchen. Erstellen wir nun eine Ansichtskomponente, um die Punktzahl anzuzeigen. Gehen Sie in Flash und ziehen Sie auf der Bühne (nicht innerhalb des Weltsymbols) eine Anzeigetafel. Das einzig Wichtige dabei ist, dass Sie mit dem Textwerkzeug ein TextField mit dem Instanznamen 'score' zeichnen. Konvertieren Sie das TextField in ein Movieclip-Symbol namens ScoreBoard.

Erstellen Sie in FlashDevelop im Ordner "world" eine Klasse mit dem Namen "ScoreDisplay", die MovieClip erweitert. Alles, was wir hier tun müssen, ist eine Instanz von ScoreKeeper zu erhalten und seine Ereignisse zu abonnieren. Es sollte so aussehen:

Gehen Sie zurück zu Flash und öffnen Sie die Eigenschaften des ScoreBoard-Symbols in der Bibliothek. Ändern Sie die Klasse in view.world.ScoreDisplay.

Flash physics platformer WCK Box2DFlash physics platformer WCK Box2DFlash physics platformer WCK Box2D

Sie haben einen letzten Schritt. Kehren Sie zur HeroCharacter-Klasse zurück und fügen Sie zwei Codezeilen hinzu:


Schritt 18: Statische Plattformen hinzufügen

Gehen Sie zu Flash Professsional und platzieren Sie eine Instanz von StaticBox (dieselbe, mit der wir Wände und Boden hergestellt haben) in der World-Instanz. Stellen Sie sicher, dass Sie den Typ in den Komponentenparametern auf static setzen und dass die Plattform niedrig genug ist, damit Ihr Player dorthin springen kann.


Schritt 19: Fügen Sie angehängte Plattformen mit Box2D-Gelenken hinzu

WCK macht das Erstellen von schwingenden Plattformen sehr einfach. Wir können das Ganze in der Flash-IDE erledigen, ohne Code zu schreiben.

Zeichnen Sie zunächst einen Kreis. Konvertieren Sie den Kreis in ein Symbol namens Joint und setzen Sie die Basisklasse auf wck.Joint. Klicken Sie anschließend mit der rechten Maustaste auf das Joint-Symbol in der Bibliothek und gehen Sie zu Komponentendefinition. Stellen Sie die Klasse als wck.Joint ein. Legen Sie im Eigenschaftenfenster den Instanznamen als anchor fest und ändern Sie unter Komponentenparameter den type in Revolute. Dies ist die Verbindung, die unserer Plattform eine Pendelbewegung verleiht.

Zeichnen Sie eine Plattform mit dem Rechteck-Werkzeug. Wählen Sie es aus und konvertieren Sie es in ein Symbol. Stellen Sie die Basisklasse auf extras.Platform ein. Klicken Sie mit der rechten Maustaste auf das Symbol in der Bibliothek und setzen Sie in der Komponentendefinition die Klasse auf extras.Platform.

Ziehen Sie zwei weitere Instanzen der gemeinsamen Klasse in die Welt und platzieren Sie jede an einem Ende der Plattform. Das Layout sollte folgendermaßen aussehen:

Flash physics platformer WCK Box2DFlash physics platformer WCK Box2DFlash physics platformer WCK Box2D

Gehen Sie für jede neue gemeinsame Instanz zu Komponentenparameter und ändern Sie den type in "Distance". Schreiben Sie in das Feld target2Name "anchor". Testen Sie Ihren Film und Sie sollten eine schwingende Plattform haben.


Schritt 20: Feinde hinzufügen

Fügen Sie in FlashDevelop dem Ordner \characters\ eine neue Klasse mit dem Namen EnemyCharacter hinzu. Hier ist der Code, den wir schreiben werden (dies wird sehr vertraut aussehen):

Das einzig Neue dabei ist, dass jedes Mal, wenn das Objekt mit einer Wand kollidiert, die Richtung geändert wird. Und bei jedem Schrittereignis wird dem feindlichen Charakter ein Impuls in die Richtung gegeben, in die er blickt.

Gehen Sie zurück zu Flash, zeichnen Sie einen feindlichen Charakter und konvertieren Sie ihn in ein Symbol, dessen Basisklasse auf view.characters.EnemyCharacter und Class auf Enemy gesetzt ist.

Das Letzte, was wir tun müssen, ist den Kontakt zwischen dem Spielercharakter und dem feindlichen Charakter zu handhaben. Fügen Sie in der HeroCharacter-Klasse den folgenden Code hinzu:

Wenn unser Held Kontakt mit etwas aufnimmt und es keine Münze ist, werden wir prüfen, ob es sich um den EnemyCharacter handelt. Wenn dies der Fall ist, überprüfen wir den Verteiler des ContactEvent, um festzustellen, ob wir den Bösen oben oder seitlich getroffen haben. Wenn wir auf ihn springen, wird er von der Bühne entfernt.

Ich wollte eine Animation hinzufügen, in der der EnemyCharacter gequetscht wird, also habe ich in Flash einen Movieclip mit einer Timeline-Animation des Feindes erstellt, der zerquetscht wird. Ich habe die Basisklasse dieses BadGuyFX-Objekts auf misc.FX gesetzt, eine Klasse in der WCK-Bibliothek, die ihre eigene Timeline-Animation einmal durchspielt und sich dann auf null setzt. Dann habe ich es mit der Util-Methode addChildAtPosOf() zur Bühne hinzugefügt. Die Animation lässt die Entfernung des Feindes nicht so plötzlich erscheinen.


Abschluss

Jetzt, da Sie einen funktionierenden Prototyp eines Plattformers haben, ermutige ich Sie, weiter zu erkunden, was WCK zu bieten hat. Ich empfehle besonders, in den Komponentenparametern Ihrer Spielobjekte herumzuspielen. Dies ist eine wirklich unterhaltsame und schnelle Möglichkeit, die Physik Ihrer Spielwelt zu ändern, ohne Code zu schreiben. Ich hoffe dir hat dieses Tutorial gefallen! Danke fürs Lesen!

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.