Skocz do zawartości

collision circle


Ice Cube

Rekomendowane odpowiedzi

Witam

 

obiekt dynamit po aktywowaniu wybucha i ma niszczyc wszystkie potwory w zasiegu 100 pixeli

 

obj_dynamit/step

if collision_circle(x,y,100,obj_potwor,false,false)with(other){instance_destroy()}   - to nie dziala zadnych potworow nie niszczy

 

if collision_circle(x,y,100,obj_potwor,false,false)with(obj_potwor){instance_destroy()} - niszczy wszystkie potwory z gry nawet te poza zasiegiem ;/

 

 

jak to napisać by zniszczyło tylko potwory w zasiegu 100pix ? help!

Odnośnik do komentarza
Udostępnij na innych stronach

Cześć, funkcja collision_circle (jak każda funkcja zaczynająca się od collision_*) zwraca ID instancji, także other Ci tutaj nie zadziała. Musisz zapisać ID do zmiennej tj.

var potwor = collision_circle(x, y, 100, obj_potwor, false, true);
while (potwor != noone) {
    with (potwor) {
        instance_destroy();
    }
    potwor = collision_circle(x, y, 100, obj_potwor, false, true);
}

Dałem funkcję w pętli, ponieważ funkcje collision_* zwracają Ci tylko ID jednej instancji. 

 

Dla GMS1.4+ zamiast with(potwor) można zapisać instance_destroy(potwor)

Odnośnik do komentarza
Udostępnij na innych stronach

21 minut temu, I am Lord napisał:

Widzę że na nic się zdał mój poprzedni wywód? Przeczytałeś to w ogóle? 

Był tam nawet przykład zarówno użycia collision_circle jak również użycia instance_nearest zarówno tym jak i drugim dałoby radę ten cel osiągnąć. 

 

I am Lord czytam każde twoje jakże cenne dla mnie porady,ale nie zawsze potrafie je zrozumieć w 100% od razu .Jeszcze raczkuje w gm. kazda odpowiedz

rodzi kolejne pytania.kolejna sprawa moj english jest na poziomie tuska wiec czasem nie ogarniam detali :P prosze o troche wyrozumiałosci jeszcze :)

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

Jak chcesz zniszczyć wszystko w promieniu 100px, to nie korzystasz z collision_circle. Collision_circle zwraca informację, czy w kole o danym promieniu zachodzi kolizja z innym podanym obiektem.

 

1) w gms2 można użyć collision_circle_list

 

2). pozostałe sposoby

with (obj_potwor) { if (distance_to_point(other.x, other.y) < 100) { instance_destroy(); }}
Odnośnik do komentarza
Udostępnij na innych stronach

Tutaj dorzucę taką drobną informację bo zapewne @Ice Cube nie będzie wiedział. 

distance_to_point()

które Gnysek podał zwraca odległość od punktu do najbliższej krawędzi bounding boxa obiektu zaś funkcja

point_distance()

którą także możesz tutaj użyć zwraca już odległość między jednym punktem a drugim.

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