Skocz do zawartości
  • 0
Ice Cube

instance_activate/deactivate

Pytanie

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

 

 

 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

15 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
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);

Udostępnij tego posta


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

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

 

 

 

 

 

 

 

 

 

 

 


 

Udostępnij tego posta


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

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. ;)

Udostępnij tego posta


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

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

Udostępnij tego posta


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

Udostępnij tego posta


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

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

Udostępnij tego posta


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

Udostępnij tego posta


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

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

 

Udostępnij tego posta


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

próbowalem alternatywnie czegos takiego:

 

if distance_to_object(obj_dzewo)<100 instance_activate_object(obj_dzewo) else instance_deactivate_object(obj_dzewo)

 

ale to działa na wszystkie instancje,a nie na pojedyncze :(

Udostępnij tego posta


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

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!

 

Udostępnij tego posta


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

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ć ;).

Udostępnij tego posta


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

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)                           
    }
}

 

Udostępnij tego posta


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

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 ;)

Udostępnij tego posta


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

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

×