Chciałbym podziękować Wam za ogromny odzew, wsparcie i Wasze zaangażowanie.
Względnie przystępne rozwiązanie w skrócie:
GML
// obiekt tworzacy siatke. creation code
global.siatka=mp_grid_create(0,0,room_width/32,room_height/32,32,32);
mp_grid_add_instances(global.siatka,obj_wall,false);
//-----------------------------------------------
// obiekt przeciwnik
//creation
sciezka=path_add();
path_set_kind(sciezka,0);
path_set_precision(sciezka,1);
idziedo=false
// step
if idzedo=false
{
if distance_to_point(obj_player.x,obj_player.y)<400 && !collision_line(x,y,obj_player.x,obj_player.y,sciana,false,true)
{
idziedo=true;
exit;
}
}
if idziedo=true
{
path_end();
if distance_to_point(obj_player.x,obj_player.y)>32
{
mp_grid_path(global.siatka,sciezka,x,y,obj_player.x,obj_player.y,false);
path_set_kind(sciezka,0);
path_set_precision(sciezka,8);
path_start(sciezka,2,0,false);
}
}
// end step
image_angle -= (((((image_angle - point_direction(xprevious,yprevious,x,y)) mod 360) + 540) mod 360) - 180)/(4)