Skocz do zawartości

Odejmowanie życia 2 obj po kolizji z nim


Rekomendowane odpowiedzi

Witam. Mam 2 objekty ( obj_1, obj_2 ). Chcę zrobić aby po kolizji obj_1 z obj_2 ( wtedy wlacza sie animacja w obj_1 ) po skonczeniu animacji w obj_1 odejmowalo 5 zycia w obj_2. Lecz na planszy sa jeszcze inne obj_2 wiec zycie ma sie odejmowac temu co sie kolizjuje. Help.

Odnośnik do komentarza
Udostępnij na innych stronach

Wykorzystaj takie eventy jak Collision with (to chyba oczywiste) i Animation End. Dodatkowo zainteresuj się funkcją instance_nearest, ew. zapisuj to ID drugiego obiektu przez other w wyniku kolizji.

 

 

 

 

podrzucanie wędki ftw

Odnośnik do komentarza
Udostępnij na innych stronach

GML (create)
a=false;//zapamiętuje id obj_2 z którym obj_1 ma kolizję

// false oznacza, że nie ma z żadnym kolizji</span>

GML (step obj1)
if(collision_circle(x,y,10,obj_2,1,0)&&!a)//jeśli obj_2 jest w promieniu 10 px od obj_1 i a jest 0

{

a=collision_circle(x,y,10,obj_2,1,0);//zapamiętaj pod zmienną a id obj_2, który ma kolizję z obj_1

// reszta kodu

}

GML (tam gdzie masz kod na koniec ataku w obj1)
a.hp-=5;//odejmij obj_2, który ma id=a, 5 hp

a=fasle;//żeby znów można było wykonać animacje ataku</span>

Wartość promienia w drugim coliision_circle() musi być co najmniej równa wartości promienia w pierwszym collision_circle(). W przeciwnym razie wyskoczą Ci błędy, ponieważ warunek if() będzie spełniony a kod a=collision_circle(x,y,10,obj_2,1,0); nie będzie wykonany, gdyż obj_1, nie będzie miał kolizji z obj_2. Inaczej mówiąc GM nie wie z którym obj_2 koliduje obj_1.

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