Skocz do zawartości
  • 0
Ice Cube

collision circle

Pytanie

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!

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

6 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 1

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)

  • Lubię (+1) 1

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 1

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.

  • Lubię (+1) 1

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0

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ąć. 

 

 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0
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 :)

 

 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0

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(); }}
  • Lubię (+1) 1

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

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

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×