Skocz do zawartości

Walka wręcz


Makary155

Rekomendowane odpowiedzi

Moje gry zawsze bazowały na strzelaniu, chciałbym teraz jakąś odmianę;)

 

Zrobiłem rycerzyka i chciałbym żeby:

1)podejdź do wroga, zmień animację na atak(to umiem)

2)jeśli animacja machnięcia mieczem się skończy, odbierz hp przeciwnikowi, przewiduję kilka animacji ataku

3) rycerzyk ma drużynę, więc żeby nie odbierał swoim hp

4) podczas ataku zadawał obrażenia jednemu wrogowi, a nie wszystkim wokół

 

Będę wdzięczny za pomoc, dodam do kredek.

Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

2, 3, 4.

GML (AnimationEnd)
if(sprite_index=animacja1)

{

if(other.object_index!=parent_dobrzy)

other.hp-=10 // opcjonalnie inny sposób na dobranie się do instancji wroga, niż other (który pamięta ostatnią instancję z jaką kolidował)

}

Odnośnik do komentarza
Udostępnij na innych stronach

instance_nearest() przecież istnieje :P

Odnośnik do komentarza
Udostępnij na innych stronach

to nie ma znaczenia, bo i tak sprawdzi wszystkie aktywne instancje danego obiektu. Jednak szybciej GMowi jest obliczyć odległość instancji od punktu niż sprawdzać czy jego maska nie koliduje z punktem.

Odnośnik do komentarza
Udostępnij na innych stronach

to nie ma znaczenia, bo i tak sprawdzi wszystkie aktywne instancje danego obiektu. Jednak szybciej GMowi jest obliczyć odległość instancji od punktu niż sprawdzać czy jego maska nie koliduje z punktem.

ale przy instance_place raczej nie będzie możliwości walnięcia wroga, który np. jest za bohaterem.

 

podkreślam, że jednak nie sprawdzałem tego w praktyce

Odnośnik do komentarza
Udostępnij na innych stronach

instance_position dziala na podobnej zasadzie co instance_place, tez sprawdza na podstawie maski, ktorys z nich jednak jest szybszy od drugiego, pech ze nie pamietam ktory. tak czy siak - nearest jest najrozsadniejszy

Odnośnik do komentarza
Udostępnij na innych stronach

Przy place nie wiesz nigdy który obj ci zwróci a przy position masz pewność że zwróci ci tego pierwszego na wskazanej pozycji.

Sądzę że place jest szybszy bo nie sortuje id wskazanych instancji, ale nie sprawdzałem tego.

 

EDIT:

woot http://www.gmclan.org/up539_11_instance_pl...e_position.html ciekawe czemu tutaj działa tylko position

EDIT2: już jest poprawione :P

Odnośnik do komentarza
Udostępnij na innych stronach

Najprostrzy sposób. Rycerzykom robisz zmienną team wachającą się od 0 do ilości teamów jakie mogą być w grze.

 

Teraz kolizja z poj. obiektem. robisz jakiś obiekt maskę, z małym spritem. Visible na off. Zawsze jak kończy ci sie animacja ataku tworzysz obiekt mniej więcej w miejscu gdzie ten rycerzyk machnął mieczem. Tworzonemu obiektowi odrazu ustawiasz team=rycerz.team (tzn. taki team jaki ma obiekt, który go stworzył).

 

I teraz w mieczyku sprawdzasz zwyczajowo kolozje z rycerzykami. Jeśli team != other.team

wali dmg i kasuje obiekt maskę. W ten sposób zada obrażenia tylko 1 osobie. Prosty, skuteczny sposób.

Dodatkowo możesz nastawić w create takiego obiektu alarm na 2 i w alarmie instance_destroy na wszelki wypadek.

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