Spiele Funktionen hinzufügen
Wenn jedes Event so wie vorhin beschrieben würde, wäre es wohl ein sehr langes Tutorial. Wir halten uns deshalb die Beschreibung der nächsten Events ein wenig kürzer. Zur Erinnerung, die Schritte für das Hinzufügen einer Bedingung sind folgende:
1. Doppel-Klick fügt ein neues Event ein oder Klick auf Add action um eine Aktion hinzuzufügen.
2. Doppel-Klick auf das Objekt das die Bedingung/Aktion enthält.
3. Doppel-Klick die Bedingung/Aktion die Sie möchten.
4. Geben sie die Parameter ein die Sie brauchen.
Wir verwenden nun die Schreibweise Objekt, gefolgt von den Bedingungen/Aktionen, gefolgt von Parametern um ein Event zu beschreiben. Das Event welches wir gerade eingefügt haben würde dann so ausehen:
Füge die Bedingung System .> Every tick hinzu.
Füge die Aktion Player -> Set angle towards position -> X: Mouse.X, Y: Mouse.Y hinzu.
Lass den Spieler schießen
Wenn der Spieler klickt, dann soll eine Kugel abgeschossen werden. Dies können wir durch die Spawn an object Aktion in Spieler erreichen welche eine neue Instanz des Objekts an derselben Position mit demselben Winkel erzeugt. Das Bullet movement das wir zuvor hinzugefügt haben wird es dann vorwärts fliegen lassen. Erzeuge folgendes Event:
Condition: Mouse -> On click -> Left clicked (Voreinstellung)
Action: Player -> Spawn another object -> Für Object, wähle das Bullet object. Für Layer, nimm 1 (der "Main" Layer ist layer 1 - bedenke Construct 2 zählt von Null an). Belasse Image point* bei 0.
Ihr Ereignis sollte nun aussehen wie dieses:
Wenn Sie nun das Spiel starten, werden Sie sehen daß die Kugeln nun aus der Mitte des Spielers heraus geschossen werden, anstatt aus dem Ende der Kanone. Dies ändern wir indem wir eine image point an das Ende der Kanone setzen. (Ein image point ist die Position in einem Bild aus der heraus neue Objekte erzeugt werden.)
Mache einen Rechts-Klick auf das Player Objekt in der Projekt- oder Objekt-Leiste und wähle Edit animation.
Der Grafik-Editor für den Player erscheint wieder. Klicke auf das origin and image points Werkzeug:
...und der image points Dialog öffnet sich:
Wir sehen, daß der origin des Objekts als roter Punkt erscheint. Das ist der "hotspot" oder "pivot point" des Objekts. Wenn Sie das Objekt drehen, dann dreht es sich um den origin. Wir wollen einen neuen image point hinzufügen der die Kanone represäntiert und klicken darum den grünen plus Button. Es erscheint ein blauer Punkt - das ist unser neuer image point. Klicke mit der linken Maustaste auf die das Ende der Spieler-Kanone um den image point dort zu platzieren:
Schliesse den Grafik-Editor. Mache einen Doppel-Klick auf die Spawn an object action welche wir zuvor erstellt haben und ändere den Image point auf 1. (Der oringin ist immer der erste image point, und bedenke das Construct 2 immer von 0 weg zählt.) Das Event sollte nun wie das untenstehende aussehen - Beachten Sie das nun Image point 1 angezeigt wird:
Starte das Spiel. Die Kugeln schießen nun aus der Kanone! Die Kugeln machen aber nocht nichts. Hoffentlich, wenn sie beginnen mit dem Event System verrauter zu sein, werden sie sehr schnell Funktionaltität hinzufügen können.
Die Kugeln solen nun die Monster töten. Füge das folgende Event hinzu:
Condition: Bullet -> On collision with another object -> pick Monster.
Action: Monster -> Destroy
Action: Bullet -> Spawn another object -> Explosion, layer 1
Action: Bullet -> Destroy
Der Explosions Effekt
Starte das Spiel und vesuche ein onster abzuschießen. Ooops, die Explosion hat ein großes schwarzes Rechteck!
Sie nahmen wahrscheinlich an es sieht aus wie am Beginn und fragen sich ob ihr Spiel am Ende wirklich so aussieht! Keine Sorge, das tut es nicht. Klicke auf das Explosion object entweder in der Objekt Leiste auf der rechten Seite oder in der Projekt Leiste (welche auf dem Layer Tab ist). Die Properties erscheinen in der properties Leiste links. Setze ganz unten seine Blend mode Eigenschaft auf Additive. Teste nun das Spiel erneut.
Wie funktioniert dies? Ohne auf alle Details einzugehen, normale Images werden ganz oben auf den Bildschirm eingefügt. Mit dem additive effect wird jedes Pixel stattdessen mit dem Hintergrund Pixel darunter addiert (Als Produkt beider). Schwarz ist ein Pixel mit dem Wert 0, darum wird nichts addiert - sie können den Hintergund nicht sehen. Hellere Farben erzeugen mehr und erscheinen daher stärker. Das sieht großartig bei Explosions- und Blitzeffekten aus.
Machen wir die Monster etwas klüger
Bis jetzt bewegen sich die Monster auf dem Layout nur nach rechts. Machen wir das Ganze ein wenig interessanter. Zuerst geben wir ihnen einen zufälligen Winkel.
Condition: System -> On start of Layout
Action: Monster -> Set angle -> random(360)
Sie wandern immer noch ewig weiter wenn sie das Layout velassen und warden nie mehr gesehn. Behalten wir sie drinnen. Dazu müssen wir sie zurück auf den Spieler zeigen lassen wenn sie das Layout velassen. Dies bewirkt zwei Dinge: Sie bleiben immer innerhalb des Layouts und wenn der Spieler stehen bleibt kommen die Monster zu ihm hin!
Condition: Monster -> Is outside layout
Action: Monster -> Set angle toward position -> Für X, Player.X - für Y, Player.Y.
Starte das Spiel Wenn Sie eine Weile warten, sehen Sie daß die Monster im Layout bleiben und sich in allen möglichen Richtungen bewegen. Man kann es zwar schwer AI nennen, aber es funktioniert!
Nehmen wir einmal an, wir möchten, daß ein Monster fünf Mal getroffen werden muss, bevor es tot ist, anstatt das dieses sofort stirbt wie es bis jetzt der Fall ist. Wie machen wird das? Wenn wir nur einen Zähler für "Gesundheit" haben und es wird ein Monster getroffen, dann sterben alle Monster. Stattdessen brauchen wir für jedes Monster einen eigenen Zähler um seine eigene Gesundheit zu speichern. Dies können wir mit instance variables erreichen.