Hallöchen Leute!
Habe da eine Frage bezüglich Arrays bzw Grids.
Viele von euch kennen sicher die "ds_grid_set_disk" bzw "ds_grid_get_disk" Methoden, mit denen Man sozusagen "Kreisflächen" in den Grids abfragen bzw setzen konnte. (Also von einem Mittelpunkt ausgehend einen Kreis "befüllen" bzw abzufragen.)
Nun, dies ist für Grids natürlich Praktisch, ich jedoch würde mir die Funktion gerne selber "nachbasteln", da ich dadurch mehr kontrolle hätte (und zusätzliche Abfragen implementieren könnte.)
Ich habe da auch schon eine Möglichkeit gefunden wie man das machen könnte:
Alles anzeigen
Das Problem an der ganzen Sache ist, dass der Script mehrmals hintereinander dieselbe Stelle abfragt.
Dies kann sich bei der mehrfachigen Anwednung des Scripts negativ auf die Performance auswirken.
Gibt es eine Performanceschonendere Art diesen "Kreis" Abzufragen?
Habe da eine Frage bezüglich Arrays bzw Grids.
Viele von euch kennen sicher die "ds_grid_set_disk" bzw "ds_grid_get_disk" Methoden, mit denen Man sozusagen "Kreisflächen" in den Grids abfragen bzw setzen konnte. (Also von einem Mittelpunkt ausgehend einen Kreis "befüllen" bzw abzufragen.)
Nun, dies ist für Grids natürlich Praktisch, ich jedoch würde mir die Funktion gerne selber "nachbasteln", da ich dadurch mehr kontrolle hätte (und zusätzliche Abfragen implementieren könnte.)
Ich habe da auch schon eine Möglichkeit gefunden wie man das machen könnte:
GML-Quellcode
- //auf diesen Koordinaten im Grid soll der Kreis "gesetzt" bzw "abgefragt" werden.
- origin_x = 20;
- origin_y = 32;
- //360° durchgehen
- for(r=0;r<360;r+=+1){
- var max_le;
- max_le = 10; //Radiums von 10 Feldern abfragen
- //vom Mittelpunkt nach außen gehen
- for(le=0;le<max_le;le+=+1){
- //berechne nun (relativ zu den ursprungskoordinaten) das nächste Feld des Kreises.
- new_x = origin_x+round(lengthdir_x(le,r));
- new_y = origin_y+round(lengthdir_y(le,r));
- //setze das Feld (man könnte den Befehl auch gegen die Abfrage eines 2 Dimensionalen Arrays austauschen. Das Prinzip ist ja das gleiche.)
- ds_grid_set(gridID,new_x new_y,0); //Trage nun in das eine Feld den Wert 0 ein
- //für Arrays:
- //Array[new_x][new_y] = 0;
- }
- }
Das Problem an der ganzen Sache ist, dass der Script mehrmals hintereinander dieselbe Stelle abfragt.
Dies kann sich bei der mehrfachigen Anwednung des Scripts negativ auf die Performance auswirken.
Gibt es eine Performanceschonendere Art diesen "Kreis" Abzufragen?
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von LEWA ()