Hi an alle
War gerade dabei mein Hauptengine vom Boulder Dash zu Testen ob alles funktioniert. Zu meinen bedaueren leider nicht. Bei meinen Rechts- bzw. Linksläufer funktioniert der Code nur halbwegs. Ich zeig euch den Code die ich geschrieben habe der in Step Event steht
Alles anzeigen
Dies ist aber nur ein Auszug. Da für die andere Richtung im Grund das selbe steht und die Angabe der Richtung änder sich.
Aber jetzt zu meinen eigentlichen Problem. Wie ihr im Code sehen könnt frage ich ab auf welches Objekt ich nicht treffen und reagiere dem entsprechend. So wei so gut. Bloß Ignoriert er ab obj_magische_Mauer_an alles. Für das Prog sind sie nie vorhanden.
Aber wenn ich den Code so schreibe
Alles anzeigen
Also wenn ich es so schreib mit dem "all" klappt alles. Da wird jedes Objekt erkannt. Das möchte ich aber nicht. Da ich auf den Spieler bzw. auf die Amöbe spezell reagieren muss. Und die Collision abfrage funkt nicht, da die Routine im Step Event dies ja verhintert. Spich der Schmetterling berührt zwar den Spieler, aber da die Collisonabfrage einwenig später abgefragt wird, ist ja der Schmetterling schon wo anders.
Eigentlich bräuchte ich einen Befehl der folgendes aussage "Prüfe alle Objekte ausser bla, bla.
So ich hoffe das ich mich verständlich ausgedrückt habe.
Und vor allem Dinge ob mir einer Helfen kann den Code dem entsprechend umzuprogammieren.
Gruss euer Drachen

War gerade dabei mein Hauptengine vom Boulder Dash zu Testen ob alles funktioniert. Zu meinen bedaueren leider nicht. Bei meinen Rechts- bzw. Linksläufer funktioniert der Code nur halbwegs. Ich zeig euch den Code die ich geschrieben habe der in Step Event steht
GML-Quellcode
- //////////////////////////////////////////
- // Schmetterlinge sind rechts-Läufer //
- //////////////////////////////////////////
- {
- Richt = false
- speed = max_speed;
- if ( !place_snapped(32,32) ) exit;
- switch (direction)
- {
- case 0: // läuft nach rechts
- // prüfe wohin der Rechtsläufer laufen kann, beginnend mit unten, dann rechts, dann oben und dann wieder nach links
- if (!position_meeting(x,y+32,obj_Rand) &&
- !position_meeting(x,y+32,obj_Erde) &&
- !position_meeting(x,y+32,obj_Fels) &&
- !position_meeting(x,y+32,obj_Diamant) &&
- !position_meeting(x,y+32,obj_Mauer) &&
- !position_meeting(x,y+32,obj_magische_Mauer_an) &&
- !position_meeting(x,y+32,obj_magische_Mauer_aus) &&
- !position_meeting(x,y+32,obj_Quadrat) &&
- !position_meeting(x,y+32,obj_Schmetterling))
- {
- // unter uns ist kein Objekt
- Richt = 270;
- }
- else if (!position_meeting(x+32,y,obj_Rand) &&
- !position_meeting(x+32,y,obj_Erde) &&
- !position_meeting(x+32,y,obj_Fels) &&
- !position_meeting(x+32,y,obj_Diamant) &&
- !position_meeting(x+32,y,obj_Mauer) &&
- !position_meeting(x+32,y,obj_magische_Mauer_an) &&
- !position_meeting(x+32,y,obj_magische_Mauer_aus) &&
- !position_meeting(x+32,y,obj_Quadrat) &&
- !position_meeting(x+32,y,obj_Schmetterling))
- {
- // rechts von uns ist kein Objekt
- Richt = 0;
- }
- else if (!position_meeting(x,y-32,obj_Rand) &&
- !position_meeting(x,y-32,obj_Erde) &&
- !position_meeting(x,y-32,obj_Fels) &&
- !position_meeting(x,y-32,obj_Diamant) &&
- !position_meeting(x,y-32,obj_Mauer) &&
- !position_meeting(x,y-32,obj_magische_Mauer_an) &&
- !position_meeting(x,y-32,obj_magische_Mauer_aus) &&
- !position_meeting(x,y-32,obj_Quadrat) &&
- !position_meeting(x,y-32,obj_Schmetterling))
- {
- // über uns ist kein Objekt
- Richt = 90;
- }
- else if (!position_meeting(x-32,y,obj_Rand) &&
- !position_meeting(x-32,y,obj_Erde) &&
- !position_meeting(x-32,y,obj_Fels) &&
- !position_meeting(x-32,y,obj_Diamant) &&
- !position_meeting(x-32,y,obj_Mauer) &&
- !position_meeting(x-32,y,obj_magische_Mauer_an) &&
- !position_meeting(x-32,y,obj_magische_Mauer_aus) &&
- !position_meeting(x-32,y,obj_Quadrat) &&
- !position_meeting(x-32,y,obj_Schmetterling))
- {
- // links von uns ist kein Objekt
- Richt = 180;
- }
- else
- {
- // keine Möglichkeit
- speed = 0;
- }
- break;
Dies ist aber nur ein Auszug. Da für die andere Richtung im Grund das selbe steht und die Angabe der Richtung änder sich.
Aber jetzt zu meinen eigentlichen Problem. Wie ihr im Code sehen könnt frage ich ab auf welches Objekt ich nicht treffen und reagiere dem entsprechend. So wei so gut. Bloß Ignoriert er ab obj_magische_Mauer_an alles. Für das Prog sind sie nie vorhanden.
Aber wenn ich den Code so schreibe
GML-Quellcode
- //////////////////////////////////////////
- // Schmetterlinge sind rechts-Läufer //
- //////////////////////////////////////////
- {
- Richt = false
- speed = max_speed;
- if ( !place_snapped(32,32) ) exit;
- switch (direction)
- {
- case 0: // läuft nach rechts
- // prüfe wohin der Rechtsläufer laufen kann, beginnend mit unten, dann rechts, dann oben und dann wieder nach links
- if (!position_meeting(x,y+32,all))
- {
- // unter uns ist kein Objekt
- Richt = 270;
- }
- else if (!position_meeting(x+32,y,all))
- {
- // rechts von uns ist kein Objekt
- Richt = 0;
- }
- else if (!position_meeting(x,y-32,all))
- {
- // über uns ist kein Objekt
- Richt = 90;
- }
- else if (!position_meeting(x-32,y,all))
- {
- // links von uns ist kein Objekt
- Richt = 180;
- }
- else
- {
- // keine Möglichkeit
- speed = 0;
- }
- break;
Also wenn ich es so schreib mit dem "all" klappt alles. Da wird jedes Objekt erkannt. Das möchte ich aber nicht. Da ich auf den Spieler bzw. auf die Amöbe spezell reagieren muss. Und die Collision abfrage funkt nicht, da die Routine im Step Event dies ja verhintert. Spich der Schmetterling berührt zwar den Spieler, aber da die Collisonabfrage einwenig später abgefragt wird, ist ja der Schmetterling schon wo anders.
Eigentlich bräuchte ich einen Befehl der folgendes aussage "Prüfe alle Objekte ausser bla, bla.
So ich hoffe das ich mich verständlich ausgedrückt habe.
Und vor allem Dinge ob mir einer Helfen kann den Code dem entsprechend umzuprogammieren.
Gruss euer Drachen
