Ich arbeite an einem "Held gegen Monster"-Spiel, bei dem in jedem Step das Heldobjekt mit folgendem Code die vorhandenen Instanzen durchzählt:
Alles anzeigen
Der Code funktioniert prima und sorgt zuverlässig dafür, dass ein Monster den Helden entdeckt, wenn der Held in Sichtweite ist, eine unbehinderte Sichtlinie besteht und das Monster in Richtung des Helden schaut. So weit, so gut.
Monster, die vom Spieler getroffen werden, zerstören sich selbst durch "instance_destroy()". Dies wird durch ein gesondertes Skript geregelt, welches die entsprechende Monsterinstanz aufruft. Es geschieht also nicht während der Durchführung der Schleife in obigem Skript und sollte deshalb keinen Einfluss auf dieses haben. Hat es aber - als Folge der Instanzzerstörung erhalte ich die Fehlermeldung:
ERROR in
action number 1
of Step Event
for object obj_held:
In script [Name des obigen Skripts]:
Error in code at line 8:
if (temp.object_index==obj_monster)
at position 15: Unknown variable object_index
Offenbar löst das Löschen der Instanz den Fehler aus - "temp" scheint keine korrekte ID zu sein. Ich kann den Fehler zwar durch die Option "Treat uninitialized variables as value 0"-Option vertsuchen aber da ich kein Programmierstrolch bin, kommt diese Option nicht in Frage.
Hat jemand eine Idee, wie ich das Problem lösen und meine Coderehre retten kann?
GML-Quellcode
- // Sichtkontakt prüfen
- for (i=0; i<instance_count; i+=1)
- {
- temp=instance_id[i];
- if (temp.object_index==obj_monster)
- {
- // Held in Sichtweite des Monsters?
- if (point_distance(x,y,temp.x,temp.y)<=temp.aktionsradius)
- {
- // Sichtlinie zum Monster frei?
- if not (collision_line(x,y,temp.x,temp.y,par_raum,0,0))
- {
- // Held im Blickfeld des Monsters?
- obj_monsterblick.x=temp.x;
- obj_monsterblick.y=temp.y;
- obj_monsterblick.image_angle=temp.direction;
- if (collision_line(x,y,temp.x,temp.y,obj_monsterblick,1,0))
- {
- // Kontakt bestätigt
- global.kontakt=true;
- }
- }
- }
- }
- }
Monster, die vom Spieler getroffen werden, zerstören sich selbst durch "instance_destroy()". Dies wird durch ein gesondertes Skript geregelt, welches die entsprechende Monsterinstanz aufruft. Es geschieht also nicht während der Durchführung der Schleife in obigem Skript und sollte deshalb keinen Einfluss auf dieses haben. Hat es aber - als Folge der Instanzzerstörung erhalte ich die Fehlermeldung:
ERROR in
action number 1
of Step Event
for object obj_held:
In script [Name des obigen Skripts]:
Error in code at line 8:
if (temp.object_index==obj_monster)
at position 15: Unknown variable object_index
Offenbar löst das Löschen der Instanz den Fehler aus - "temp" scheint keine korrekte ID zu sein. Ich kann den Fehler zwar durch die Option "Treat uninitialized variables as value 0"-Option vertsuchen aber da ich kein Programmierstrolch bin, kommt diese Option nicht in Frage.
Hat jemand eine Idee, wie ich das Problem lösen und meine Coderehre retten kann?