Skocz do zawartości

Atak


Rekomendowane odpowiedzi

Pytanie jest może dla was proste, ale bądźcie wyrozumiali bo wy też kiedyś zaczynaliście... Otóż, chciałbym, by po skończonej animacji, wróg miał mniej HP niż przed chwilą, animację mam, wystarczy tylko kod. Aha, użyłem opcji "szukaj" ale znalazłem, jeden temat i to jeszcze mało z niego zrozumiałem

Odnośnik do komentarza
Udostępnij na innych stronach

Napisz w kodzie w końcu animacji:

if distance_to_object(wróg) < jakąś liczbę {wróg.hp -= iletamchcesz}

To będzie poprawne, gdy jest tylko jeden wróg. Myślę, że lepiej byłoby sprawdzić to w stepie wroga:

GML
if(distance_to_object(gracz)<[wartość]&&gracz.sprite_index==[animacja ataku]&&gracz.image_index==[ostatnia klatka animacji])

{

hp-=[wartość];

if(hp<0)

{

//jakis tam kod

}

}

Odnośnik do komentarza
Udostępnij na innych stronach

To będzie poprawne, gdy jest tylko jeden wróg. Myślę, że lepiej byłoby sprawdzić to w stepie wroga:

GMLif(distance_to_object(gracz)<[wartość]&&gracz.sprite_index==[animacja ataku]&&gracz.image_index==[ostatnia klatka animacji])

{

hp-=[wartość];

if(hp<0)

{

//jakis tam kod

}

}

 

Chyba, że da się parenta do wrogów co będzie prostym rozwiązaniem, nigdy tego nie robiłem, ale powinno działać.

Odnośnik do komentarza
Udostępnij na innych stronach

Dając parent musiałbyś stworzyć n wrogów (czyli o n-1 więcej objectów). Po za tym gdyby usunąć pierwszego wroga (ten co ma zdefiniowane wszystkie eventy), to usunięci zostaliby także pozostali wrogowie. A chyba o to nie chodzi.

Odnośnik do komentarza
Udostępnij na innych stronach

Chodzi o animację gracza,czy animację odebrania ciosu przez przeciwnika? Jeżeli o tę pierwszą to kod nie jest trudny:

GML
a = collision_point(x+5/*5 to odległość przeciwnika od gracza*/ + sprite_width/*dla orgina ustawionego na 0, czyli domyślnie*/,y,o_przeciwnik,0,1)

if(a && image_index = image_number - 1)//czyli jeżeli wykrył przeciwnika i klatka animacji jest ostatnią. opcjonalnie można dopisać && sprite_index = s_atak w nawiasie.

{

a.hp-=1//odejmuje mu hp

}

Dajesz w stepie i śmiga. Ewentualne jeżeli postać może być skierowana w dwie strony dajesz zamiast pierwszej linijki:

GML
switch(image_xscale)

{

case 1:

a = collision_point(x+5 + sprite_width,y,o_przeciwnik,0,1);break;

case -1:

a = collision_point(x-5,y,o_przeciwnik,0,1);break;

}

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