Hi
hab mich wieder mit dem Motion system von meinem Spiel beschäftigt weil mir das alte nicht so gut gefiel.
hab eine Kombination aus grid path und potential step gemacht.
zum bewegen benutze ich jetzt dieses Skript:
Spoiler anzeigen
Alles anzeigen
Die Sache funktioniert auch recht gut, allerdings gibt es ein problem.
Immer wenn die einheit am Pfadende ankommt beginnt sie sich zumm 0,0 Punkt zu bewegen.
Ich kann das irgendwie nicht fixen.
hab sogar versucht zu überprüfen ob der Abstand zum Ziel kleiner als 2 ist, die Bewegung zu stoppen. Es will einfach nicht wirken.
EDIT: hab den Code komplett umgeschrieben.
Es funktioniert jetzt
hab mich wieder mit dem Motion system von meinem Spiel beschäftigt weil mir das alte nicht so gut gefiel.
hab eine Kombination aus grid path und potential step gemacht.
zum bewegen benutze ich jetzt dieses Skript:
GML-Quellcode
- var xx,yy;
- if move_time > wanted_fps/fps*200
- stp = 1;
- if stp = 0
- {
- n_point = 0;
- move_time = 0;
- stp = 1;
- if path_exists(motion_path) path_delete(motion_path);
- motion_path = path_add();
- mp_grid_add_instances(motion_grid,argument0,true)
- mp_grid_clear_rectangle(motion_grid,x-sprite_width/2,y-sprite_height/2,x+sprite_width/2,y+sprite_height/2)
- if !mp_grid_path(motion_grid,motion_path,x,y,argument1,argument2,true)
- {
- add_message("No way possible for this unit!");
- move = 0;
- exit;
- }
- mp_grid_clear_all(motion_grid);
- point_number = path_get_number(motion_path);
- }
- var b;
- do
- {
- if !path_exists(motion_path) break;
- xx = path_get_point_x(motion_path,n_point);
- yy = path_get_point_y(motion_path,n_point);
- move_time = 0;
- b = position_meeting(xx,yy,argument0);
- if b = 1
- n_point += 1;
- if n_point >= point_number
- {
- if path_exists(motion_path) path_delete(motion_path);
- break;
- }
- }
- until(b = 0)
- move_time += 1;
- mp_potential_step_object(xx,yy,move_speed*wanted_fps/fps,argument0);
- if point_distance(x,y,xx,yy) < move_speed +1
- n_point += 1;
Die Sache funktioniert auch recht gut, allerdings gibt es ein problem.
Immer wenn die einheit am Pfadende ankommt beginnt sie sich zumm 0,0 Punkt zu bewegen.
Ich kann das irgendwie nicht fixen.
hab sogar versucht zu überprüfen ob der Abstand zum Ziel kleiner als 2 ist, die Bewegung zu stoppen. Es will einfach nicht wirken.
EDIT: hab den Code komplett umgeschrieben.
Es funktioniert jetzt
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von DragonGamer ()