koziu Opublikowano 29 Października 2007 Udostępnij Opublikowano 29 Października 2007 Hello! Mam nastepujacy problem: Jak zrobic aby jednostki wychodzily z budynku, czyli po kolei: - utworzenie jednostki w srodku budynku (instance_create(x,y,Uit)) - jednostka opuszcza budynek (???) w taki sposob aby po wyjsciu poza niego juz unikac jednostek... Albo rozwiazaniem bedzie dla mnie tez mozliwosc sprawdzenia, ze dany prostokat jest pusty (nie ma tam obiektow...) wymyslilem cos takiego: do{ a = x-sprite_width*1.75 + random(sprite_width*3); b = y+sprite_height/2 + random(sprite_height*1.25); }until(collision_rectangle(a-8,b-8,x+8,y+8,all,false,false)>0 && place_free(a,B)) ale nie spelnia to moich oczekiwan... tworzone obiekty i tak na siebie wpadaja bede wdzieczny za kazda pomoc :) pozdro, Koziu Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 29 Października 2007 Udostępnij Opublikowano 29 Października 2007 Raczej do{ a = x-sprite_width*1.75 + random(sprite_width*3); b = y+sprite_height/2 + random(sprite_height*1.25); }until(collision_rectangle(a-8,b-8,x+8,y+8,all,false,false)>0 || !place_free(a,b)) powinno działać tak jak tego chcesz. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
koziu Opublikowano 29 Października 2007 Autor Udostępnij Opublikowano 29 Października 2007 Raczejdo{ a = x-sprite_width*1.75 + random(sprite_width*3); b = y+sprite_height/2 + random(sprite_height*1.25); }until(collision_rectangle(a-8,b-8,x+8,y+8,all,false,false)>0 || !place_free(a,b)) powinno działać tak jak tego chcesz. chyba wiem w czym moze byc problem... wydaje mi sie, ze collision_rectangle sprawdza czy w podanym kwadracie nie znajduje sie SRODEK obiektu sprawdzanego... Bo mnie ustawiaja sie te obiekty tak, ze zachodza troche na siebie. Sprawdzimy :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 29 Października 2007 Udostępnij Opublikowano 29 Października 2007 Nie, dla całego sprita. Może masz źle ustawiony region. do{ a = x-sprite_width*1.75 + random(sprite_width*3); b = y+sprite_height/2 + random(sprite_height*1.25); }until( collision_rectangle(a - sprite_xoffset, b - sprite_yoffset, a - sprite_xoffset + sprite_width, b - sprite_yoffset + sprite_height,all,false,true) == noone ) EDIT Mała poprawka. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
koziu Opublikowano 30 Października 2007 Autor Udostępnij Opublikowano 30 Października 2007 Nie, dla całego sprita. Może masz źle ustawiony region. do{ a = x-sprite_width*1.75 + random(sprite_width*3); b = y+sprite_height/2 + random(sprite_height*1.25); }until( collision_rectangle(a - sprite_xoffset, b - sprite_yoffset, a - sprite_xoffset + sprite_width, b - sprite_yoffset + sprite_height,all,false,true) == noone ) EDIT Mała poprawka. thx :) jest tylko jeden problem jeszcze... zawiesza sie momentami :/ wprowadze chyba jakis ogranicznik... jak nie znajdzie po 300 obiegach niech oleje szukanie Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się