Titel: Instance Creation Code
Verfasst von: Chronic (Administrator auf GMC)
Mit Erlaubnis des Autors übersetzt von: Kilik (Moderator auf gm-d.de)
Original Link: Klick
Hinweise auf Rechtschreib- und/oder Grammatikfehler an Kilik, inhaltliche Fehler oder Bugreports
(auch wenn ich mir ziemlich sicher bin, dass es dererlei keiner gibt) an Chronic (bitte auf Englisch).
Verfasst von: Chronic (Administrator auf GMC)
Mit Erlaubnis des Autors übersetzt von: Kilik (Moderator auf gm-d.de)
Original Link: Klick
Der Instance Creation Code ist wahrscheinlich ein viel zu oft übersehenes Feature im Game Maker. In diesem Tutorial werde ich beschreiben wie man sich dieses Feature zunutze machen kann und nebenbei auch ein kleines Example Schritt für Schritt auseinander nehmen.
Ich habe für dieses Tutorial Game Maker 6.1 verwendet, aber mit dem Game Maker 5.3a sollte es genauso gut funktionieren.
Aufrufen (ja, die Übersetzung dieses Begriffes hinkt, aber mir fiel nichts besseres ein)
Dieses Feature aufzurufen ist wirklich leicht. Zuallererst sollte man seinen Game Maker in den Advanced Mode gestellt haben (File -> Advanced Mode)
Als nächstes erstellt man ein Objekt und einen Raum und fügt eine Instanz des Objektes in den Raum ein. Halte jetzt 'Strg' gedrückt und rechtsklicke auf die Instanz. Nun sollte ein Kontext-Menü mit mehreren Optionen zu sehen sein.
Instance Context Menü
Wenn man nun auf "Creation Code" klickt erscheint ein Codeeingabe Fenster wie bei "Execute a piece of code", in welches man nun seinen Code eingibt. Alles was hier eingegeben wird gilt nur für diese Instanz.
Sobald du der Instanz also einen Code verpasst hast, wird ein kleiner Tooltip mit dem text "has code" angezeigt, sobald sich der Cursor über ihr befindet.
Example
Ich werde nun anhand eines Teleporter-Objektes eine der vielen Verwendungsmöglichkeiten dieses Features demonstrieren.
Erstelle ein neues Projekt mit folgenden Ressourcen:
- 2 Sprites - spr_player, spr_telepad.
- 2 Objekte - obj_player, obj_telepad.
- 1 Raum - room0.
Als Sprites habe ich verwendet:
Spieler Und Teleporter Sprites
Gib dem obj_player nun ein Step Event mit folgendem Code für das grundlegende Verhalten:
Platziere nun eine Instanz von obj_player im Raum und probiere aus ob alles soweit funktioniert. Wenn sich das Objekt in Richtung der Maus bewegt ist alles wie es sein soll und du kannst weitermachen.
Als nächstes brauchen wir obj_telepad. Gib diesem Objekt ein Collision Event mit obj_player und füge folgenden Code ein:
Platziere nun ebenfalls eine Instanz von obj_telepad in room0. Das Spiel jetzt auszuführen würde eine Fehlermeldung hervorbringen, da 'teleX' und 'teleY' noch nicht definiert wurden.
Dazu werden wir jetzt den Creation Code verwenden. Öffne nun diesen der Instanz des Objektes obj_telepad, wie bereits am Anfang des Tutorials erklärt, und füge dort folgenden Code ein:
Jetzt kannst du das Projekt ausführen um den Teleporter auszuprobieren. Lass den Spieler einfach über den Teleporter laufen, und er sollte zu den Koordinaten geschickt werden, welche du im Creation Code definiert hast.
Als Beweis, dass der Creation Code wirklich instanzenabhängig ist, erstelle einfach noch eine Instanz von obj_telepad und gib dieser andere Zielkoordinaten im Creation Code.
Eine Sache, welche wichtig wäre zu erwähnen, ist dass du bei der Berührung des obj_telepad einen Error bekommen wirst, insofern du 'teleX' und 'teleY' nicht vorher definiert hast. Um das zu vermeiden reicht es folgenden Code in das Create Event von obj_telepad. Das ist ideal, da der Instance Creation Code noch VOR dem Create Event ausgeführt wird.
Gehen wir noch einen Schritt weiter
Es ist übrigens auch möglich das Objekt auf diese Weise an eine bestimmte Stelle in einem ganz anderen Raum zu teleportieren. Zu diesem Zweck erweitern wir unser kleines Script ein wenig.
Und das Collision Event folgendermaßen:
Im Creation Code deiner Instanz von obj_telepad kannst du nun in einen anderen Raum wechseln indem du die Variable newRoom folgendermaßen definierst:
Das letzte was dazu noch zu tun ist, wäre obj_player persistent zu machen
Zum Abschluss
Wie du also gesehen hast, kann dieses Feature des Game Maker sehr nützlich sein. Eine andere Anwendungsmöglichkeit wäre z.B. eine Schatztruhe, in welcher du dem Spieler normalerweise ein zufälliges Item geben würdest, bei bestimmten Truhen jedoch ein spezifisches.
Die fertigen Resultate dieses Tutorials siehst du hier:
Instance Creation Code
Thanks for reading.
Hinweise auf Rechtschreib- und/oder Grammatikfehler an Kilik, inhaltliche Fehler oder Bugreports
(auch wenn ich mir ziemlich sicher bin, dass es dererlei keiner gibt) an Chronic (bitte auf Englisch).
Hier werden sie geholfen:
[Regeln] [GML] [Hilfe] [Suche] [Posten] [Duden.de]
[Wenn das alles nicht mehr hilft] [Dunning-Kruger]

"Die Vernunft sollte Autorität definieren; nicht umgekehrt!"
"Selber denken regt das Gehirn an." - Niffel f.k.a. Kilik
[Regeln] [GML] [Hilfe] [Suche] [Posten] [Duden.de]
[Wenn das alles nicht mehr hilft] [Dunning-Kruger]

"Die Vernunft sollte Autorität definieren; nicht umgekehrt!"
"Selber denken regt das Gehirn an." - Niffel f.k.a. Kilik