Startseite | Anpassen | Blog | Extras | Anmelden | Info
Handbuch | D&D icons | GML Parser | Archiv | Iso City
Benutzername: Passwort:  
Über | Funktionen | Verzeichnis | Banner | Kontakt

Den Game Maker benutzen
Den Game Maker benutzen

Ereignisse

Der Game Maker ist ereignisgesteuert. Das funktioniert so: Wann immer etwas im Spiel geschieht, erhalten die Instanzen der Objekte Ereignisse (events). Die Instanzen können dann auf diese Ereignisse reagieren, indem sie bestimmte Aktionen (actions) auslösen. Für jedes Objekt muss fest gelegt werden, auf welche Ereignisse es reagiert und welche Aktionen ausgeführt werden sollen, wenn dieses Ereignis eintritt. Das hört sich kompliziert an, ist tatsächlich aber ganz einfach. Zuerst einmal müssen die Objekte für die meisten Ereignisse nichts machen. Für die Ereignisse, in denen Aktionen gefordert sind, steht ein simples "Drag&Drop-System" zur Verfügung, worin die entsprechenden Aktionen zugeordnet werden können.

In der Mitte der "object property form" (Eingabemaske der Objekteigenschaften) befindet sich eine Liste der Ereignisse (events), auf die das Objekt reagieren muss. Anfangs ist sie leer. Du kannst Ereignisse hinzufügen, indem du auf den Add event Knopf klickst. Ein kleines Auswahlmenü mit den diversen Ereignissen klappt auf. Hier kannst du das Ereignis auswählen, welches du hinzufügen möchtest. Manchmal klappt noch ein zusätzliches Menü auf, mit weiteren Auswahlmöglichkeiten. Beispielsweise musst du für ein "keyboard event" die Taste (key) festlegen. Weiter unten wird aufgelistet welche Ereignisse es gibt plus Beschreibung. Ein Ereignis wird aus der Liste ausgewählt. Dieses ist es, welches wir momentan bearbeiten. Um ein anderes anzuwählen, klicke es einmal mit der Maus an. Rechts befinden sich die ganzen Aktionen (actions), welche durch kleine Icons dargestellt werden. Sie sind in mehrere Gruppen unterteilt. Im nächsten Kapitel werden sie beschrieben. Das Feld zwischen der Ereignisliste und den Aktionen ist die Aktionsliste (action list). Hier werden die Aktionen für das angewählte Ereignis festgelegt. Um eine Aktion hinzuzufügen, ziehe sie (das Icon) mit der Maus einfach rüber in diese Liste. Sie werden mit einer Kurzbeschreibung untereinander einsortiert. Für jede Aktion werden einige Parameter erwartet. Dies wird auch im nächsten Kapitel erläutert. Wenn nun einige Aktionen hinzugefügt wurden, sieht die Situation wie folgt aus:

/library/manual/images/form_event_panel.jpg

Jetzt kannst du anfangen Aktionen anderen Ereignissen zuzuordnen. Klicke mit der linken Maustaste auf das entsprechende Ereignis, um es auszuwählen und ziehe die Aktionen in die jeweilige Liste.

Du kannst die Sortierung der Liste per "Drag-and-Drop" ändern. Wenn du die <Alt> Taste während des Ziehens gedrückt hälst, machst du eine Kopie der Aktion. Du kannst sogar zwischen den "action"-Listen verschiedener Objekte "Drag-and-Drop" verwenden. Wenn du eine Aktion mit der rechten Maustaste anklickst erscheint ein Menü, in welchem du die gewählte Aktion löschen (Dies kann auch mit der <Entf> Taste gemacht werden), kopieren oder ausschneiden kannst. (Du kannst zum Ausschneiden, Kopieren oder Löschen mehrere Aktion auswählen, indem du die <Shift> oder <Strg> Taste gedrückt hälst. Drücke <Strg><A> um alle Aktionen auszuwählen.) Wenn du den Mauszeiger länger über eine Aktion hälst erscheint eine längere Beschreibung dieser Aktion. Für mehr Informationen über Aktionen lese im nächsten Kapitel weiter.

Um das momentan markierte Ereignis zusammen mit all seinen Aktionen zu löschen, drücke den Delete Knopf. (Ereignisse ohne irgendwelche Aktionen in ihrer Liste werden automatisch beim Schließen der Eingabemaske entfernt, sodass man sie nicht extra von Hand aussortieren muss.) Wenn du die Aktionen einer Liste einem anderem Ereignis zuweisen willst (weil du Dich vielleicht für eine andere Taste entschieden hast), drücke einfach den Knopf Change und wähle ein anderes Ereignis. (Das neue Ereignis sollte nicht schon definiert sein!) In dem du das Menü benutzt, welches bei einem Rechtsklick auf ein Ereignis erscheint, kannst du ein Ereignis duplizieren, d.h. ein neues Ereignis mit denselben Aktionen hinzufügen.

Wie oben erwähnt erscheint folgendes Auswahlmenü, wenn du auf den Add event Knopf drückst:

/library/manual/images/form_event_selector.jpg

Hier wählst du das hinzuzufügende Ereignis aus. Bei manchen erscheint ein weiteres Menü, mit zusätzlichen Auswahlmöglichkeiten. Hier folgt eine Beschreibung der unterschiedlichen Ereignisse (Erinnere dich daran, dass man üblicherweise nur einige wenige verwendet).

create Create event
Dieses Ereignis wird ausgelöst, wenn eine Instanz eines Objektes erzeugt wird. Gewöhnlich verwendet man es, um die Instanz in Bewegung zu setzen oder bestimmte Variablen der Instanz zu festzulegen.

destroy Destroy event
Es wird ausgelöst, wenn die Instanz zerstört wird. Um genau zu sein - kurz vorher. Was bedeutet, dass die Instanz noch existiert, wenn das Ereignis ausgeführt wird! Die meiste Zeit über wird dieses Ereignis nicht verwendet aber man kann es beispielsweise nutzen, um den "score" (Punktestand) zu ändern oder ein anderes Objekt zu erschaffen.

timer Alarm events
Jede Instanz besitzt 12 Alarmuhren. Du kannst diese Alarmuhren durch verschiedene Aktionen einstellen (siehe nächstes Kapitel). Die Alarmuhr tickt dann runter bis sie 0 erreicht und in diesem Moment das "alarm event" auslöst. Um die Aktionen für eine Alarmuhr anzuzeigen, musst du sie zuerst im Menü anwählen. "alarm clocks" sind sehr nützlich. Du kannst sie verwenden, um gewisse Dinge von Zeit zu Zeit geschehen zu lassen. Beispielsweise kann ein Monster seine Bewegungsrichtung alle 20 "steps" ändern (in so einem Fall muss eine Aktion innerhalb des Ereignises die Alarmuhr wieder neu stellen).

step Step events
Das "step event" wird bei jedem "step" (Schritt) des Spiels ausgelöst. Hier kannst du Aktionen platzieren, die kontinuierlich ausgeführt werden müssen. Beispielsweise wenn ein Objekt einem anderen folgen soll, kannst du hier die Bewegungsrichtung des Verfolgers angleichen. Sei trotzdem vorsichtig mit diesem Ereignis. Packe nicht zu viele komplizierte Aktionen in die "step events" von Objekten, von welchen viele Instanzen vorhanden sind. Das könnte das Spiel verlangsamen. Um genau zu sein - es gibt drei verschiedene "step events". Normalerweise braucht man nur das voreingestellte. Aber mittels des Menüs kann man auch die Anderen verwenden ("begin step" (Schrittanfang) und "end step" (Schrittende)). Das "begin step"-Ereignis wird am Anfang eines Schrittes ausgelöst, bevor andere Ereignisse auftreten. Das voreingestellte/normale "step event" wird ausgelöst, kurz bevor die Instanzen auf ihre neuen Positionen gesetzt werden. Das "end step"-Ereignis wird am Endes eines Schrittes ausgelöst, kurz bevor gezeichnet wird. Es wird üblicherweise benutzt, um beispielsweise das "sprite" in Abhängigkeit von der Bewegungsrichtung zu ändern.

collision Collision events
Wann immer zwei Instanzen kollidieren (das geschieht, wenn ihre "sprites" überlappen), wird ein "collision event" ausgelöst. Genauer zwei - eins pro Instanz. Die Instanz kann auf dieses Ereignis reagieren. Wähle im Menü aus, bei welchem Objekt du ein Kollisionsereignis definieren willst. Danach platziere hier weitere Aktionen.

Es gibt Unterschiede was passiert, wenn Instanzen mit soliden bzw. nicht-"soliden" Objekten kollidieren. Zuerst einmal, wenn keine Aktionen im Kollisionsereignis definiert sind, passiert nichts. Die Instanz bewegt sich einfach weiter, auch wenn das andere Objekt "solid" ist. Wenn das Kollisionsereignis Aktionen enthält geschieht folgendes:

Wenn das andere Objekt "solid" ist, wird die an ihre vorherige Position Instanz  (vor der Kollision) zurückgesetzt. Dann erst wird das Ereignis ausgelöst. Anschliessend wird die Instanz an die neue Position bewegt. Wenn das Ereignis beispielsweise die Bewegungsrichtung umkehrt, prallt die Instanz gegen die Wand, ohne anzuhalten. Wenn dann immer noch eine Kollision vorliegt, wird die Instanz an der vorherigen Stelle gehalten. Sie hält effektiv an.

Wenn das andere Objekt nicht "solid" ist, wird die Instanz nicht zurückgesetzt. Das Ereignis wird einfach ausgelöst mit der Instanz an der aktuellen Position. Auch gibt es keine 2. Kollissionsabfrage. Wenn du darüber nachdenkst, ist es die logische Konsequenz, die eintreten sollte. Weil das andere Objekt ja nicht "solid" ist, kann es einfach durchquert werden. Das Ereignis informiert dich also darüber, dass dieses gerade geschehen ist.

Es gibt viele Anwendungsmöglichkeiten für das "collision event". Instanzen können es verwenden, um von Wänden abzuprallen. Du kannst es einsetzen, um Objekte zu vernichten, wenn sie z. B. von einer Kugel getroffen werden - und so weiter.

keyboard Keyboard events
Wenn der Spieler eine Taste drückt, wird ein Tastaturereignis für alle Instanzen aller Objekte ausgelöst. Für jede Taste ein anderes Ereignis. Im Menü kannst du die Taste bestimmen, für die du ein Tastaturereignis festlegen willst und anschliessend die Aktionen hinüberziehen. Klar ausgedrückt brauchen nur wenige Objekte solche Ereignisse für wenige Tasten. Ein Ereignis wird in jedem Schritt (step) erzeugt, solange der Spieler die Taste drückt. Es gibt zwei besondere Tastaturereignisse. Eines heißt <No key> (keine Taste). Es wird in jedem Schritt erzeugt, falls keine Taste gedrückt ist. Der zweite ist <Any key> (jede Taste) awas bei beliebigem Tastendruck ausgelöst wird. Wenn der Spieler mehrere Tasten drückt, wird für jede Taste ein Ereignis ausgelöst. Beachte, dass die Ereignisse des Ziffernblocks nur die korrespondierenden sind, wenn <NumLock> aktiviert ist.

mouse Mouse events
Ein "mouse event" wird immer dann für eine Instanz ausgelöst, wenn der Mauszeiger innerhalb dessen Sprite positioniert ist. Abhängig von der Maustaste erhälst du ein "no button"(keine Taste), ein "left button"(linke Maustaste), ein "right button"(rechte Maustaste) oder ein "middle button"(mittlere Maustaste) Ereignis. Die Ereignisse werden in jedem Schritt erzeugt, solange der Spieler die Taste drückt. Die "press events" (Taste drücken) werden nur einmal beim Herunterdrücken der Taste erzeugt. Die "release events" (Taste loslassen) nur beim Loslassen der Taste. Beachte, dass diese Ereignisse nur auftreten, wenn der Mauszeiger über der Instanz ist. Wenn diese Ereignisse für beliebige Mauspostionen gelten sollen, verwende die globalen "press/release" Ereignisse stattdessen. Es gibt zwei besondere Mausereignisse. Das "mouse enter" (Beginn der Überdeckung) Ereignis und das "mouse leave" (Verlassen der Überdeckung) Ereignis. Ersteres wird beim "Berühren" der Instanz ausgelöst, letzteres, wenn der Mauszeiger die Zone über der Instanz verlässt. Diese Ereigisse werden üblicherweise genutzt, um das Sprite zu ändern oder einen SFX zu erzeugen. Mouse wheel up und Mouse wheel down Events werden ausgeführt, wenn der Benutzer das Mausrad dreht. Schliesslich gibts noch Ereignisse für Steuerknüppel (Joysticks). Du kannst Aktionen für die 4 Richtungen angeben (diagonal werden beide Ereignisse ausgelöst). Bis zu 8 Knöpfe können verwaltet werden. Du kannst all das für 2 Spielgeräte verwenden (1. und 2. Steuerknüppel).

other Other events
Es gibt eine Anzahl anderer Ereignisse, welche in bestimmten Spielen nützlich sind. Man findet sie in diesem Menü. Folgende Ereignisse können hier gefunden werden:

  • Outside: Dieses Ereignis wird ausgelöst, wenn die Instanz komplett ausserhalb des Raumes liegt. Typischerweise ein guter Moment, sie zu vernichten.
  • Boundary: Dieses Ereignis wird ausgelöst, wenn die Instanz die Grenze des Raumes berührt.
  • Game start: Dieses Ereignis wird für alle Instanzen des ersten Raumes ausgelöst, wenn das Spiel beginnt. Es wird vor dem "room start event" (siehe unten) aber nach dem "creation event" für die Instanzen innerhalb des Raumes. Es wird typischerweise nur in einem "Steuerungsobjekt" verwendet, um Hintergrundmusik zu starten oder Variablen zu initialisieren oder ein paar Daten zu laden.
  • Game end: Dieses Ereignis wird für alle Instanzen am Ende des Spiels ausgelöst. Auch dieses wird in einem Objekt verwendet. Es wird verwendet, um beispielsweise Spieldaten zu speichern.
  • Room start: Dieses Ereignis wird am Anfang eines Raumes für alle Instanzen ausgelöst. Es geschieht nach den "creation events".
  • Room end: Wird für alle existierenden Instanzen am Ende des Raumes ausgelöst.
  • No more lives: Game Maker hat ein eingebautes Lebenssystem. Es gibt eine Aktion um die Anzahl der "lives" ("Leben"), zu setzen und zu verändern. Wann immer dieser Wert auf 0 sinkt (oder tiefer), wird dieses Ereignis ausgelöst. Es wird benutzt, um das Spiel zu beenden oder neu zu starten.
  • No more health: Game Maker hat ein eingebautes Lebensenergie. Es gibt eine "action", um diesen Wert zu setzen und zu verändern. Wann immer dieser Wert auf 0 oder weniger sinkt, wird dieses Ereignis ausgelöst. Es wird normalerweise verwendet. um die Anzahl der "lives " zu reduzieren oder das Spiel zu neu zu starten.
  • End of animation: Wie oben erwähnt, besteht eine Animation aus einer Anzahl Einzelbilder, welche nacheinander angezeigt werden. Wenn das Letzte angezeigt wurde beginnt es wieder von vorne. Das Ereignis wird genau hier ausgelöst. Es kann verwendet werden, um die Animation zu ändern oder die Instanz zu vernichten.
  • End of path: Dieses Ereignis wird ausgelöst, wenn die Instanz einem Pfad (path) folgt und an dessen Ende angelangt.
  • User defined: Es gibt 16 dieser Ereignisse. Sie werden normalerweise nie ausgelöst, solange du sie nicht via Programmcode auslöst.

draw Drawing event
Instanzen, wenn sie sichtbar sind, zeichnen ihr Sprite in jedem "step" auf den Bildschirm. Wenn du Aktionen im "drawing event" definierst, wird das sprite nicht gezeichnet aber stattdessen die Aktionen ausgeführt. Das kann verwendet werden, um etwas anderes, als das Sprite zu zeichnen oder erst die Parameter des Sprite zu ändern. Es gibt eine Anzahl von "drawing actions" welche extra für das "drawing event" bestimmt sind. Beachte, dass das "drawing event" nur ausgelöst wird, wenn das Objekt sichtbar ist. Beachte auch, das unabhängig von dem was du darstellst, Kollisionsereignisse auf dem zugehörigen Sprite basieren.

keypress Key press events
Dieses Ereignis ist dem Tastaturereignis ähnlich. Es wird ausgelöst beim Runterdrücken der Taste anstatt permanent bei Tastendruck. Es ist nützlich, wenn du nur einmal etwas bei Tastendruck geschehen lassen willst.

keyrelease Key release events
Dieses Ereignis ist dem Tastaturereignis ähnlich. Es wird ausgelöst beim Loslassen der Taste anstatt permanent bei Tastendruck.

In manchen Situationen ist es wichtig zu wissen, wie der Game Maker Ereignisse verarbeitet. Dies läuft so ab:

  • Begin step events
  • Alarm events
  • Keyboard, Key press, and Key release events
  • Mouse events
  • Normal step events
  • (nun werden alle Instanzen an ihre Positionen gesetzt)
  • Collision events
  • End step events
  • Drawing events

Die creation, destroy und anderen Ereignisse werden ausgelöst, wenn die korrespondierenden Umstände eintreten.

Suche Suche


Alternative Versionen Alternative Versionen

Du kannst dieses Handbuch auch auf einer langen Seite (± 1.5 mb) ansehen.

Auch verfügbar in: Niederländisch Englisch Französisch

ZIP Download helpfile

Werbung Werbung

GameMaker Handbuch