Den Game Maker benutzen
Instanzen
Im Spiel sind die grundlegenden Einheiten die Instanzen der verschiedenen Objekte. Während des Spielverlaufs kannst du einige Aspekte dieser Instanzen verändern. Du kannst auch neue Instanzen erschaffen und/oder vernichten. Neben den oben besprochenen Bewegungsvariablen und den unten aufgeführten zeichnenbezogenen Variablen besitzt jede Instanz noch folgende Variablen:object_index* Index des Objektes wovon dies hier eine Instanz ist. Diese Variable kann nicht verändert werden.
id* Der einzigartige Bezeichner für diese Instanz (>= 100000). (Beachte: Beim Erstellen von Räumen, wird die id immer angezeigt, wenn der Mauszeiger über einem Objekt ist.)
mask_index Index des "sprites", welches als Maske bei Kollisionen verwendet wird. Verwende einen Wert von -1, damit es das gleiche wie der "sprite_index" benutzt.
solid Gibt an, ob die Instanz "solid" ist. Kann im Spiel verändert werden.
persistent Gibt an, ob die Instanz "persistent" (beständig) ist und nach einem Raumwechsel wieder erscheint. Oftmals willst du das in gewissen Momenten abstellen (Beispielsweise wenn du zum ersten Raum zurück willst).
Es gibt nur ein Problem, wenn man
sich mit Instanzen befasst. Es ist nicht gerade leicht einzelne
Instanzen zu identifizieren. Sie haben keinen Namen. Wenn nur eine
Instanz eines bestimmten Objektes vorhanden ist, kannst du den Namen
des Objektes verwenden - Wenn jedoch mehrere Instanzen vorhanden
sind, musst du
die id ermitteln. Dies ist eine einzigartige
Identifizierung der Instanz. Du kannst sie bei "with statements"
und als Objektbezeichner verwenden. Glücklicherweise gibt es
eine Anzahl von Funktionen und Variablen, die dir helfen, die id zu
ermitteln.
instance_count* Anzahl der Instanzen, welche momentan im Raum sind.
instance_id[0..n-1]* Die id der bestimmten Instanz. Wobei n die Nummer der Instanz ist. Beachte, dass die Position einer Instanz im Array sich bei jedem Schritt verändert, benutze deswegen nicht die Werte vorheriger Schritte.
Lass mich ein Beispiel geben. Angenommen jede Einheit in deinem Spiel hat ein bestimmte Stärke (power) und du willst die stärkste ermitteln - verwende folgenden Programmcode:
{
maxid = -1;
maxpower = 0;
for (i=0; i<instance_count; i+=1)
{
iii = instance_id[i];
if (iii.object_index == unit)
{
if (iii.power > maxpower)
{maxid = iii; maxpower = iii.power;}
}
}
}
Nach der Schleife enthält maxid die id der Instanz mit der höchsten "power" (Stärke). (Vernichte keine Instanzen während eines solchen Schleifendurchlaufs, weil sie automatisch aus dem Array genommen werden und als Folge wirst du Instanzen überspringen).
instance_find(obj, n) Gibt die id der (n+1)ten Instanz des Objektes obj an. obj kann ein Objekt oder das Schlüsselwort "all" sein. Wenn es nicht existiert, wird das besondere Objekt "noone" zurückgegeben. Beachte, dass sich die Zuordnung wieder bei jedem Schritt verändert, deswegen benutze nicht die Werte vorheriger Schritte.
instance_exists(obj) Gibt an, ob eine Instanz des Objektes obj existiert. obj kann ein Objekt, eine Instanz-ID oder das Schlüsselwort "all" sein.
instance_number(obj) Gibt die Anzahl der Instanzen von Objekt obj an. obj kann ein Objekt oder das Schlüsselwort "all" sein.
instance_position(x, y, obj) Gibt die ID der Instanz des Objektes obj an Position (x,y) an. Falls mehrere Instanzen an dieser Stelle sind, wird nur die erste gemeldet. obj kann ein Objekt oder das Schlüsselwort "all" sein. Wenn es nicht existiert, wird das spezielle Objekt "noone" zurückgegeben.
instance_nearest(x, y, obj) Gibt die ID der Instanz von Objekt obj zurück, welche am nächsten am Punkt (x,y) ist. obj kann ein Objekt oder das Schlüsselwort "all" sein.
instance_furthest(x, y, obj)Gibt die ID der Instanz von Objekt obj zurück, welche am weitesten vom Punkt (x,y) entfernt ist. obj kann ein Objekt oder das Schlüsselwort "all" sein.
instance_place(x, y, obj) Gibt die ID der Instanz von Objekt obj an, welche getroffen wird, wenn die aktuelle Instanz an der Position (x.,y) gesetzt wird. obj kann ein Objekt oder das Schlüsselwort "all" sein. Wenn es nicht existiert, wird das besondere Objekt "noone" zurückgegeben.
Folgende Funktionen können verwendet werden, um Instanzen zu erschaffen und zu vernichten:
instance_create(x, y, obj) Erschafft eine Instanz des Objektes obj an der angegebenen Position (x,y). Die Funktion liefert die ID der neuen Instanz zurück.
instance_copy(performevent) Erschafft eine Kopie der momentanen Instanz. Das Argument gibt an, ob das "creation event" ausgeführt wird für die Kopie. Die Funktion liefert die ID der neuen Kopie der Instanz.
instance_destroy() Vernichtet die momentane Instanz.
instance_change(obj, perf) Wechselt die Instanz nach obj. Ob ein "creation/destroy event" ausgelöst wird, gibt perf an.
position_destroy(x, y) Vernichtet alle Instanzen deren "sprites" Position (x,y) abdecken.
position_change(x, y, obj, perf) Wechselt alle Instanzen an Position (x,y) in obj. "perf" gibt an, ob das "create-/destroy event" ausgelöst wird.
Alternative Versionen
Auch verfügbar in:
Download helpfile