Skocz do zawartości

Tworzenie przeciwników w shot'em up


R.o.b

Rekomendowane odpowiedzi

Cześć!

Od kilku dni zacząłem robić grę typu shot'em up. Po zrobieniu grafik itd. napotkałem niewielki problem. Chciałbym, aby przeciwnicy, byli tworzeni w odstępach ok 1-2 sekund na górze ekranu. Ułożyłem sobie taki kod w stepie:

GML
if ready=1{

switch (turn) {

case 1:

ready=0

alarm[0]=30

continue;

case 2:

ready=0

alarm[0]=30

continue;

//[...]

case 6:

ready=0

alarm[0]=30

instance_create(145,15,obj_enemy1_blue);

continue;

// i tak dalej...</span>

i kod w alarmie:
GML
turn+=1;

ready=1;

Kod działa poprawnie, tylko wstawianie kolejnych fal przeciwników jest czasochłonne i mało praktyczne. Chciałbym, aby ten system był prostszy i prawdopodobnie mnie obciążający system. Poczytałem w internecie, że mógłbym spróbować zrobić tablicę dwuwymiarową i z niej odczytywałbym pozycję, typ i czas w którym mają się pojawić przeciwnicy, ale nie wiem jak się za to zabrać ;)

Odnośnik do komentarza
Udostępnij na innych stronach

Zamiast wpisywać to samo po kolei robisz:

 

case 1:

case 2:

case 3:

case 4:

case 5:

//twoj kod

break;

 

Czytelniej i szybciej :) A co do samego spawnu to bym nie robił fali na switchu tylko zrobił skrypt spawnujący przeciwnikow i ich ilość w zależności od numeru fali. Miałbyś wszystko w kilku linijkach.

Odnośnik do komentarza
Udostępnij na innych stronach

Tak :) Robisz w alarmie coś w stylu

GML
repeat(numer_fali *ilość przeciwników)

{

instance_create(obiekt_przeciwnika,x,y);

}

numer_fali+=1; //lub numer_fali++; jesli robisz w studio

alarm0=czas_fali;

Nie jestem pewny co do kolejności argumentów w instance_create. Dawno nie siedziałem w gmie.

Odnośnik do komentarza
Udostępnij na innych stronach

piszesz o falach , ale chyba niechcesz fale spawnowac w tym samym czasie nie?

by w 1 stepie naspawnowac naprzyklad 10 enemy.(to zrobi ci kod adama :) )

piszesz tez "Chciałbym, aby przeciwnicy, byli tworzeni w odstępach ok 1-2 sekund na górze ekranu" to mozesz uzyc

GML
alarm[0]=irandom_range(_czas_min*room_speed,_czas_max*room_speed);
w alarm 0 a sam siebie bezdzie aktywowal co _czas_min az _czas_max sec

 

dalej chces cos v rodzaju RTYPE (kdzie enemy z kazdo gro bylii na tym samym miesjcu a ruszali sie po tej samej droze) lub wystarczy random?

jezeli RTYPE to mozesz uzyc do kontroli spawnu zmiennej current_time a do odzyskiwania wartosci zmiennych( _fala, ilosc_enemy, _ pozycje_x,...) czytanie z file( ini, bin) zaleznie na skomplikowanosci projektu.

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ę...