Hallo Leute.
Ich spiele gerade ein wenig mit dem mp_grid herum und versuche mehrere Character zu bewegen. Es geht um ein einfaches Strategiespiel (top/down) Nach auswahl verschiedener Eineheiten und einen Rechtsklick sollten sie sich bewegen. Dazu habe ich mal ein mp_grid erstellt, welches mir mithilfe von mp_grid_path einen Pfad erstellt um diese zu bewegen. Jetzt ist es halt so wenn alle Einheiten bewegt werden, dann sind diese alle auf den Punkt (mouse_x,mouse_y). So will ich das aber nicht.
Dazu habe ich 2 scripts geschrieben, die mir alle Einheiten durchcheckt und nachschaut ob die Position frei ist. Wenn ja, dann kann ich mich ohne Probleme dorthin bewegen. Wenn nicht, dann wird der script rekursiv aufgerufen, bis ein Punkt frei wird. Das sieht dann in etwa so aus:
Alles anzeigen
Diesen Script gibt es auch für y und der Aufruf funktioniert dann so:
Alles anzeigen
Ich habe das dann auch mit 40 Einheiten probiert. Es funktioniert zwar, aber alle werden eben diagonal nach links oben gereiht aufgestellt (Was ja klar ist, weil im Script das rekursiv nach links oben geht). Mein PRoblem ist aber, dass es mit dem jetztigen script schon etwas ruckelt bei einer größerer Auswahl. Und da ich das Rad nicht neu erfinden will (:D) wollte ich mal fragen, ob von euch jemand so ein Problem schonmal hatte, oder wie er das am Besten (ruckelfrei, wenn geht) gelöst hat. Oder hätte jemand eine Idee wie ich das besser lösen könnte?
Sorry für die schlechte Beschreibung. Auf rechtschreib/grammatikfehler habe ich nicht so geachtet.
Bin zu müde dafür, ich will dieses Problem aber heute noch unbedingt lösen
Ich hoffe ihr habt es verstanden, aber anbei noch einen Screen wie es derzeit aussieht. (Die roten Linien zeigen den Pfad)
LG und danke
Rodrog
Ich spiele gerade ein wenig mit dem mp_grid herum und versuche mehrere Character zu bewegen. Es geht um ein einfaches Strategiespiel (top/down) Nach auswahl verschiedener Eineheiten und einen Rechtsklick sollten sie sich bewegen. Dazu habe ich mal ein mp_grid erstellt, welches mir mithilfe von mp_grid_path einen Pfad erstellt um diese zu bewegen. Jetzt ist es halt so wenn alle Einheiten bewegt werden, dann sind diese alle auf den Punkt (mouse_x,mouse_y). So will ich das aber nicht.
Dazu habe ich 2 scripts geschrieben, die mir alle Einheiten durchcheckt und nachschaut ob die Position frei ist. Wenn ja, dann kann ich mich ohne Probleme dorthin bewegen. Wenn nicht, dann wird der script rekursiv aufgerufen, bis ein Punkt frei wird. Das sieht dann in etwa so aus:
GML-Quellcode
- var xx, yy;
- xx = argument0;
- yy = argument1;
- with(obj_char) {
- if(path_exists(move_path)) {
- length = path_get_length(move_path);
- path_x = path_get_x(move_path, length);
- path_y = path_get_y(move_path, length);
- distance = point_distance(xx,yy,path_x,path_y);
- if(distance < 16) {
- xx = get_free_position_x(xx-16,yy-16);
- }
- }
- }
- return xx;
Diesen Script gibt es auch für y und der Aufruf funktioniert dann so:
GML-Quellcode
- if(selected) {
- if(mouse_check_button_pressed(mb_right)) {
- if(path_exists(move_path)) {
- path_end();
- path_delete(move_path);
- }
- move_path = path_add();
- mp_grid_path(global.mp_grid,move_path,x,y,get_free_position_x(mouse_x,mouse_y), get_free_position_y(mouse_x,mouse_y),true);
- path_start(move_path,move_speed,0,false);
- }
- }
Ich habe das dann auch mit 40 Einheiten probiert. Es funktioniert zwar, aber alle werden eben diagonal nach links oben gereiht aufgestellt (Was ja klar ist, weil im Script das rekursiv nach links oben geht). Mein PRoblem ist aber, dass es mit dem jetztigen script schon etwas ruckelt bei einer größerer Auswahl. Und da ich das Rad nicht neu erfinden will (:D) wollte ich mal fragen, ob von euch jemand so ein Problem schonmal hatte, oder wie er das am Besten (ruckelfrei, wenn geht) gelöst hat. Oder hätte jemand eine Idee wie ich das besser lösen könnte?
Sorry für die schlechte Beschreibung. Auf rechtschreib/grammatikfehler habe ich nicht so geachtet.


Ich hoffe ihr habt es verstanden, aber anbei noch einen Screen wie es derzeit aussieht. (Die roten Linien zeigen den Pfad)
LG und danke
Rodrog
Je mehr Käse, desto mehr Löcher.
Je mehr Löcher, desto weniger Käse.
Ergo: Je mehr Käse, desto weniger Käse.
Je mehr Löcher, desto weniger Käse.
Ergo: Je mehr Käse, desto weniger Käse.