Skocz do zawartości

Sposób na bossa


MZG

Rekomendowane odpowiedzi

Mam następujące pytanie:

Jest obj_hero i obj_boss.

 

obj_boss podąża za obj_hero.

 

Jak dojdzie do kolizji następuje reset rooma.

 

Chodzi mi o to żeby obj_boss przy kolizji z obj_sciana został "sparaliżowany".

 

Wtedy przy kolizji z obj_hero-->obj_boss doszło by do wygranej

 

Jak tak zrobić (bo wiem że w GML można zrobić wszystko)?

 

Z góry dzięki.

 

PS. Jak ktoś może, proszę o przykład

 

PS2. Jak jeszcze zrobić by tego boss-a trzeba było udzerzyć 3 razy?

 

(W sumie to coś takiego:

 

obj_boss---kolizja obj_sciana----kolizja obj_hero

 

----czekaj 1 sek----ożywianie-----*3-----wygrana)

Odnośnik do komentarza
Udostępnij na innych stronach

W bossie

GML (Create)
hp = 3; // Ilość "żyć" bossa

sciana = false; // Nie jest sparaliżowany

canhit = true; // Może uderzyć gracza</span></span></span>

GML (Alarm0)
sciana = false;

GML (Alarm1)
canhit = true;

GML (Kolizjazesciana)
sciana = true; // Jest sparaliżowany

alarm[0] = room_speed * 5; // Po 5 sekundach inicjuje się akcja z alarmu 0, czyli boss po tym czasie dalej może atakować</span></span>

GML (Kolizjazbohaterem)
if( sciana ) // Jeżeli jest sparaliżowany

{

hp -= 1; // Odejmujemy mu jedno życie

sciana = false; // Nie jest już sparaliżowany

canhit = false; // Nie może uderzać gracza

alarm[1] = room_speed * 3; // Dopiero po 3 sekundach będzie mógł uderzyć gracza

} else if( canhit == true ) // Jeżeli nie jest sparaliżowany i może uderzyć gracza

room_restart(); // Restart rooma

if( hp <= 0 ) // Jeżeli ma 0 lub mniej życia

{

show_message( 'Wygrales!' ); // Wygrałeś

// Możesz sobie też wykonać inne akcje :P

}

 

Proszę bardzo, wszystko skomentowane.

Odnośnik do komentarza
Udostępnij na innych stronach

W bossie

GML (Create)hp = 3; // Ilość "żyć" bossa

sciana = false; // Nie jest sparaliżowany

canhit = true; // Może uderzyć gracza

GML (Alarm0)sciana = false;

GML (Alarm1)canhit = true;

GML (Kolizjazesciana)sciana = true; // Jest sparaliżowany

alarm[0] = room_speed * 5; // Po 5 sekundach inicjuje się akcja z alarmu 0, czyli boss po tym czasie dalej może atakować

GML (Kolizjazbohaterem)if( sciana ) // Jeżeli jest sparaliżowany

{

hp -= 1; // Odejmujemy mu jedno życie

sciana = false; // Nie jest już sparaliżowany

canhit = false; // Nie może uderzać gracza

alarm[1] = room_speed * 3; // Dopiero po 3 sekundach będzie mógł uderzyć gracza

} else if( canhit == true ) // Jeżeli nie jest sparaliżowany i może uderzyć gracza

room_restart(); // Restart rooma

if( hp <= 0 ) // Jeżeli ma 0 lub mniej życia

{

show_message( 'Wygrales!' ); // Wygrałeś

// Możesz sobie też wykonać inne akcje :P

}

 

Proszę bardzo, wszystko skomentowane.

Problem :(

 

Ma za mną podożać, kiedy pisze to w step to...

Już nic, ale:

Działa dobrze, tylko wygrana odrazu po pierwszym uderzeniu a nie po trzech.

To już nie obowiązkowe, ale jak ktoś by mógł...

Odnośnik do komentarza
Udostępnij na innych stronach

GML
sciana = true; // Jest sparaliżowany

alarm[0] = room_speed * 5; // Po 5 sekundach inicjuje się akcja z alarmu 0, czyli boss po tym czasie dalej może atakować</span></span></span>

A tu nie powinien ustawiac sie alarm[1] ?

 

GML
if( sciana ) // Jeżeli jest sparaliżowany

{

hp -= 1; // Odejmujemy mu jedno życie

sciana = false; // Nie jest już sparaliżowany</span></span>

Bo sciane dajesz na false przy kolizji, a z komentarza do tamtego wynika ze po 5 sekundach powinien wykonywac sie alarm[1].

#Edit

Nawet jesli sie nie pomyliles to bez sensu dawac to po 5 sekundach w alarmie, jak to samo dzieje sie zaraz przy kolizji.

Odnośnik do komentarza
Udostępnij na innych stronach

Może zobacz w jakich to eventach, hm? :) Może niedokładnie wytłumaczyłem komentarz, chodziło mi, że po 5 sekundach już nie jest sparaliżowany i może atakować gracza. A sciana = false jeżeli jest kolizja z bohaterem i boss jest sparaliżowany.

Odnośnik do komentarza
Udostępnij na innych stronach

Może wyjaśnię co zrobiłem...

GML (Create)
hp = 3; // Ilość "żyć" bossa

sciana = false; // Nie jest sparaliżowany

canhit = true; // Może uderzyć gracza</span>
To chyba jasne, inicjowanie zmiennych

 

 

GML (Alarm0)
sciana = false;

GML (Alarm1)
canhit = true;
Alarmy...

 

 

GML (Kolizjazesciana)
sciana = true; // Jest sparaliżowany

alarm[0] = room_speed * 5; // Po 5 sekundach inicjuje się akcja z alarmu 0, czyli boss po tym czasie dalej może atakować</span>
Po kolizji ze ścianą jeżeli gracz nie uderzy bossa to po 5 sekundach boss nie jest już sparaliżowany.

 

 

GML (Kolizjazbohaterem)
if( sciana ) // Jeżeli jest sparaliżowany

{

hp -= 1; // Odejmujemy mu jedno życie

sciana = false; // Nie jest już sparaliżowany

canhit = false; // Nie może uderzać gracza

alarm[1] = room_speed * 3; // Dopiero po 3 sekundach będzie mógł uderzyć gracza

} else if( canhit == true ) // Jeżeli nie jest sparaliżowany i może uderzyć gracza

room_restart(); // Restart rooma

if( hp <= 0 ) // Jeżeli ma 0 lub mniej życia

{

show_message( 'Wygrales!' ); // Wygrałeś

// Możesz sobie też wykonać inne akcje :P

}

Jeżeli boss jest sparaliżowany i zostanie uderzony przez gracza odejmujemy mu jedno życie, pozwalamy mu chodzić ale nie może uderzyć bohatera przez 3 sekundy ( żeby gracz miał czas na ucieczkę, bez tego po uderzeniu bossa odjęłoby mu życie i zresetowało grę ). Jeżeli boss nie był sparaliżowany restartujemy grę. Po uderzeniu bossa ileś tam razy wyskakuje wiadomość "Wygrałeś".
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ę...