Skocz do zawartości

Wychodzenie z budynku


koziu

Rekomendowane odpowiedzi

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

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

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.

 

 

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

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

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

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...