Witam, poradziłem sobie ze zrobieniem animacji wybuchu bomby, ale teraz chcę żeby eksplozja się zatrzymywała np. na ścianach.
Probowałem to rozwiązać tak:
1. zmienne : gora, dol,prawo,lewo - wszystkie są =1
2. w pętli ktora robila wybuch w 4 kierunkach zrobilem sprawdzenie if (instance_place(....)) // czy na pewno ta funkcja do tego sluzy??
a nastepnie jesli tam byla sciana to zmienna danego kierunku =0 np. lewo=0
3. Przy tworzeniu sprawdzam czy dany kierunek =0 , jesli 0 to przerywam, bo tam sie nie rozprzestrzenia.
Nie działało, ok, nie poddajemy się :D
no to moze tak: z użyciem place_free() // dobry pomysł??
GML
prawo=1; //0 - ściana, ogien sie nie rozprzestrzenia, 1 - idzie dalej
lewo=1;
gora=1;
dol=1;
for (i=1;i<global.zasieg;i+=1){
if (place_free(x-i*32,y) && lewo==1){instance_create(x-i*32,y,obj_bomba_po);}
else{lewo=0;}
if (place_free(x+i*32,y) && prawo==1){instance_create(x+i*32,y,obj_bomba_po);}
else{prawo=0;}
if (place_free(x,y-i*32) && gora==1) {instance_create(x,y-i*32,obj_bomba_pi);}
else{gora=0;}
if (place_free(x,y+i*32) && dol==1) {instance_create(x,y+i*32,obj_bomba_pi);}
else{dol=0;}
}
if (place_free(x-i*32,y) && lewo==1) {instance_create(x-i*32,y,obj_bomba_l);}
if (place_free(x+i*32,y) && prawo==1) {instance_create(x+i*32,y,obj_bomba_p);}
if (place_free(x,y-i*32) && gora==1) {instance_create(x,y-i*32,obj_bomba_g);}
if (place_free(x,y+i*32) && dol==1) {instance_create(x,y+i*32,obj_bomba_d);}
Wszystkie x i y są dobrze zrobione, to wiem, jest jak jest bo działam na polu zrobionym z kwadratów 32x32, w pętli tworzą się kolejne kratki gdzie rozprzestrzenia się ta eksplozja, a poza pętlą jest po prostu zakończenie, ostatnie kratki jakich dosięga wybuch.
1.Czy waszym zdaniem lepiej użyć place_free czy instance_place? (biorąc pod uwagę, że później będę musiał rozróżnić, czy na drodze stoi ściana, graczm przeciwnik, itp.)
2. Jak to zrobić żeby działało? :)
Z góry bardzo dziękuję za pomoc.
Używam Game Maker 8.0 Pro