Skocz do zawartości

instance_activate/deactivate


Ice Cube
Przejdź do rozwiązania Rozwiązane przez gnysek,

Rekomendowane odpowiedzi

Czesc

 

mam w grze wiele obiektów,ale najwiecej dzew i chciałbym tylko je deaaktywowac,jezeli odejde na jakas odleglosc,a zeby sie aktywowaly gdy bede w poblizu

wiem ,że jest takie cos:

 

instance_activate_region(x-100,y-100,x+100,y+100,true,true)

 

i to bedzie aktywowalo wokol mnie WSZYSTKO

--ale jak zrobic by tylko instancie z obj_dzewo sie aktywowaly?

 

--i jak zrobic by po odejsciu sie deaktywowały?

wiem ze jest:

instance_deactivate_region(x-100,y-100,x+100,y+100,true)

 

pozdro

 

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy
  • Rozwiązanie
instance_deactivate_object(obj_drzewo);

instance_activate_region(x-100,y-100,x+100,y+100,true,true) ;

 

jedno po drugim. obiekty są deaktywowane na koniec eventu step, więc się nie zdążą deaktywować w tej sytuacji :)

 

Jeśli chcesz deaktywować wiecej obiektów na raz, stwórz obj_rodzic i ustawiaj każdemu z obiektów jakie chcesz deaktywować Parent=>obj_rodzic (w kodzie albo klikając na oknie właściwości obiektów w pole "Parent"). Zamień tylko na instance_deactivate_object(obj_rodzic);

Odnośnik do komentarza
Udostępnij na innych stronach

no super dziala :)

,ale cos dziwnie mi aktywuje i deaktywuje te obiekty tzn.

czy dobrze wpisuje te wartosci x i y?

abym byl w samym srodku kwadratu aktywacji,a poza kwadratem jest deaktywacja

 

instance_deactivate_object(obj_dzewoR);

instance_activate_region(x-100,y-100,x+100,y+100,true) ;

 

 

i jeszcze drugie pytanie:

dzewa ktore narysowalem w roomie dzialaja,ale..

jezeli naciskam klawisz n to losowo instance_create(random(1000),random(1000),obj_dzewoR)

i tych losowych dzew ktore sobie generuje nie widac wogole nigdzie nawet jak przejde caly room i naprodukuje tych dzew kilkaset

czy je idzie aktywowac jakos?,bo jak chodze po roomie to sie nie aktywuja..

 

 

 

 

 

 

 

 

 

 

 


 

Odnośnik do komentarza
Udostępnij na innych stronach

Masz trochę dziwnie podstawione atrybuty w tej funkcji 

https://docs.yoyogames.com/source/dadiospice/002_reference/objects and instances/instances/deactivating instances/instance_activate_region.html

Cytuj

dzewa ktore narysowalem w roomie dzialaja,ale..

Tu taka mała poprawka,te drzewa zostały stworzone a nie narysowane,byłby narysowane gdybyś użył np draw_sprite. ;)

Odnośnik do komentarza
Udostępnij na innych stronach

moj player jest w niebieskim kwadracie ,w tym kwadracie obiekty sie aktywuja ,poza nim jest deaktywacja

 

wiec 

instance_deactivate_object(obj_dzewoR);

instance_activate_region(x-5,y-5,x+5,y+5,true) ;

 

chciałbym aby to dzialalo jak na rysunku,ale tak nie jest .. niemam pomysłu jak to rozgryzc

 

activ.png

Odnośnik do komentarza
Udostępnij na innych stronach

12 godzin temu, PatrykPlayingPOLSKA napisał:

Masz trochę dziwnie podstawione atrybuty w tej funkcji 

https://docs.yoyogames.com/source/dadiospice/002_reference/objects and instances/instances/deactivating instances/instance_activate_region.html

Tu taka mała poprawka,te drzewa zostały stworzone a nie narysowane,byłby narysowane gdybyś użył np draw_sprite. ;)

poprawka przyjeta ;)

 

no ale wlasnie jak poprawic te atrybuty?

Odnośnik do komentarza
Udostępnij na innych stronach

24 minuty temu, PatrykPlayingPOLSKA napisał:

instance_activate_region(x-10,y-10,x+5,y+5,true) ;

Dlaczego tak ?

Ponieważ z (x-5,y-5,x+5,y+5,true) wychodziło 0 i aktywowało gdzieś w innym miejscu,a tak z (x-10,y-10,x+5,y+5,true) wychodzi-5,czyli twój zasięg.

activ.png.9884d99b6e9b38b124b612855d25ae92.png.f0078a2079f6202144af081d15a68fa2.png

Jeżeli to nie zadziała to się poddaję. ;)

no niestety dalej nie dziala jak powinno :(

Odnośnik do komentarza
Udostępnij na innych stronach

dodam jeszcze ,że gra jest 3d

i jezeli w DRAW playera napisze:

d3d_draw_floor(x-100,y-100,2,x+100,y+100,2,background_get_texture(bck_kwadrat),1,1)

to dookola playera widze ten kwadrat,ale instancje pojawiaja sie i znikaja dobrze

tylko powiedzmy jak patrze z jednego rogu kwadratu,reszta znika z bardzo daleka

 

Odnośnik do komentarza
Udostępnij na innych stronach

Kolejna rzecz ktora próbowałem to:

 

var aaa;
aaa=collision_circle(x, y, 120, obj_dzewo, false, true)

if collision_circle(x, y, 120, obj_dzewo, false, true)
   {
   instance_deactivate_object(aaa);
   }
else instance_activate_object(aaa);;

 

 

dziala jezeli jest tylko jedno dzewo,

ale jezeli jest ich kilka w danym miejscu to

 instancje migotaja tzn.szybko aktywuja sie i deaktywuja 

 

HELP!

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 tygodnie później...

Przede wszystkim (bo nikt Cię o dziwo nie poprawił) drzewo piszemy przez "rz". Rozumiem, że raz, czy dwa można "zjeść R", ale teraz widzę, że Ty bez przerwy tak piszesz xd, ale tak tylko mówię.

 

Teraz odnośnie Twojego problemu. Ja osobiście nie używam aktywacji i dezaktywacji obiektów z tego względu, że uznaję to za zbędne funkcje i ciężko to zrozumieć (przynajmniej mi). Jeśli planujesz zrobić jakąś dużą, albo nieskończoną mapę (typu Minecraft), polecam zacząć projekt od nowa i zamiast tych funkcji, stwórz na przykład generator mapy chunk'ami. W ten sposób jeśli wygenerowane chunk'i są na przykład zbyt daleko (wykorzystujesz point_distance), to chunk wraz z jego obiektami jest zapisywany w pliku i zwyczajnie usuwany, dzięki cxemu nie zalega w pamięci programu, a jest tylko wczytywany z pliku, kiedy ponownie do niego wrócisz. Jeśli mam rozwinąć mój sposób, to daj jakoś znać ;).

Odnośnik do komentarza
Udostępnij na innych stronach

collision_circle() zwraca tylko jedno ID obiektu. Pierwsze jakie się trafi. To co ty chcesz zrobić to iterować przez wszystkie obiekty i sprawdzać czy spełniają warunek czyli czy są dostatecznie blisko.

instance_activate_all()
with(obj_dzewo) {
	if(point_distance(x,y,other.x,other.y) < 120) {
    	instance_deactivate_object(id)                           
    }
}

 

Odnośnik do komentarza
Udostępnij na innych stronach

Panowie po wielu trudach 

Dnia 19.01.2018 o 18:15, gnysek napisał:

instance_deactivate_object(obj_drzewo);

instance_activate_region(x-100,y-100,x+100,y+100,true,true) ;

 

jedno po drugim. obiekty są deaktywowane na koniec eventu step, więc się nie zdążą deaktywować w tej sytuacji :)

 

Jeśli chcesz deaktywować wiecej obiektów na raz, stwórz obj_rodzic i ustawiaj każdemu z obiektów jakie chcesz deaktywować Parent=>obj_rodzic (w kodzie albo klikając na oknie właściwości obiektów w pole "Parent"). Zamień tylko na instance_deactivate_object(obj_rodzic);


instance_deactivate_object(obj_drzewo);
instance_activate_region(x-32,y-32,64,64,true) ;
 

takie cos działa!

 

pozdro i dzieki za pomoc ;)

Odnośnik do komentarza
Udostępnij na innych stronach

Dnia 29.01.2018 o 16:10, V Fighter napisał:

Przede wszystkim (bo nikt Cię o dziwo nie poprawił) drzewo piszemy przez "rz". Rozumiem, że raz, czy dwa można "zjeść R", ale teraz widzę, że Ty bez przerwy tak piszesz xd, ale tak tylko mówię.

 

Teraz odnośnie Twojego problemu. Ja osobiście nie używam aktywacji i dezaktywacji obiektów z tego względu, że uznaję to za zbędne funkcje i ciężko to zrozumieć (przynajmniej mi). Jeśli planujesz zrobić jakąś dużą, albo nieskończoną mapę (typu Minecraft), polecam zacząć projekt od nowa i zamiast tych funkcji, stwórz na przykład generator mapy chunk'ami. W ten sposób jeśli wygenerowane chunk'i są na przykład zbyt daleko (wykorzystujesz point_distance), to chunk wraz z jego obiektami jest zapisywany w pliku i zwyczajnie usuwany, dzięki cxemu nie zalega w pamięci programu, a jest tylko wczytywany z pliku, kiedy ponownie do niego wrócisz. Jeśli mam rozwinąć mój sposób, to daj jakoś znać ;).

Polonista zawsze ze mnie był kiepski,a moze nawet jestem nieswiadomym dyslektykiem ? :D

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