Skocz do zawartości

Zablokowane Problem z place_free


ch3matic

Rekomendowane odpowiedzi

Mam taki kodzik, który ma spawnowac bonus w losowym miejscu, ale nie na obiektach solid

 

GML
bonusRandom = round(random(100))

if (bonusRandom > -1)//bonusRandom mod 2 = 0) //Calculating chance to spawn powerup

{

FoundPosition = false;

do { //Try random positions untill finding a correct one

bx = round(random(16)) +1; //Tiles in X-axis

by = round(random(12)) +1; //Tiles in Y-axis

if(place_free(bx * 40, by * 40))

{

FoundPosition = true;

instance_create(bx * 40, by * 40, o_bonus1); //Create it

}

 

 

} until FoundPosition = true;

 

 

}

 

 

 

 

Kombinuję już pół godziny nad tym, ale i tak spwanuje te bonusy na obiektach solid, 

 

x40 bo takie są tile

 

nawet w dokumentacji znalazłem, że tam jest w sumie taki sam kod, no ale nadal nie działa.

 

Nie wiem why.

 

Ma ktoś propozycje?

Odnośnik do komentarza
Udostępnij na innych stronach

A obiekt który wykonuje ten kod ma jakąś maskę lub sprite'a?

Bo place_free wykrywa kolizję obiektu w którym jest funkcja wywołana. Bez maski nie wykryje ci nigdy kolizji.

 

A tak poza tym to widać, że ten kod jest bezmyślne skopiowany.

Po co ci to?

GML
bonusRandom = round(random(100))

if (bonusRandom > -1)

To zawsze będzie prawdziwe.
Odnośnik do komentarza
Udostępnij na innych stronach

a ten obiekt ma ustawionego sprita?

place_free nie działa jak obiekt jest bez zdefioniownego sprajta.

 

GML
bx = round(random(16)) +1; //Tiles in X-axis

by = round(random(12)) +1; //Tiles in Y-axis

while ( not place_free(bx * 40, by * 40 ))

{

bx = round(random(16)) +1; //Tiles in X-axis

by = round(random(12)) +1; //Tiles in Y-axis

}

 

instance_create(bx * 40, by * 40, o_bonus1); //Create it</span>

Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 tygodnie później...
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

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