LolikZabijaka Opublikowano 1 Lutego 2011 Udostępnij Opublikowano 1 Lutego 2011 Witam, mam poważny problem, otóż w dużym roomie gry z dużą ilościa obiektów FPS gry spadał. Przeczytałem gdzieś odnośnie deaktywacji. Na początku sam ją wprowadziłem do gry i faktycznie było dobrze, ale potem się przyjrzałem i zobaczyłem że dekatywacja przebiega źle. Więc wywaliłem kod z obiektu i chciałem na pewnien czas zrezygnować z tej funkcji. Ale po wywaleniu kodów obiekty nadal się deaktywują. Dostałem od Pablo-GM kod na deaktywację wszystkiego, ale na popsutym już poprzednim kodem silniku zrobił się straszny burdel(inaczej tego nie da się określić) Przeciwnicy niby się deaktywują, ale kiedy ucieka taki za ekran to włazi w ściany(czego wcześniej nie robił) na meble itp. Kiedy jestem między jakimiś obiektami gra cyklicznie przyspiesza dwukrotnie. Zresztą sami zobaczcie: Silnik gry Za deaktywację odpowiada obj_controller Obiekty są jako tako poukładane. Mam prośbę, czy ktoś mógłby mi podać przyczynę tego bajzlu i pomóc mi go poskładać? Za pomoc serdecznie dziękuję. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TO_mek Opublikowano 3 Lutego 2011 Udostępnij Opublikowano 3 Lutego 2011 Witam, mam poważny problem, otóż w dużym roomie gry z dużą ilościa obiektów FPS gry spadał. Przeczytałem gdzieś odnośnie deaktywacji. Na początku sam ją wprowadziłem do gry i faktycznie było dobrze, ale potem się przyjrzałem i zobaczyłem że dekatywacja przebiega źle. Więc wywaliłem kod z obiektu i chciałem na pewnien czas zrezygnować z tej funkcji. Ale po wywaleniu kodów obiekty nadal się deaktywują. Dostałem od Pablo-GM kod na deaktywację wszystkiego, ale na popsutym już poprzednim kodem silniku zrobił się straszny burdel(inaczej tego nie da się określić) Przeciwnicy niby się deaktywują, ale kiedy ucieka taki za ekran to włazi w ściany(czego wcześniej nie robił) na meble itp. Kiedy jestem między jakimiś obiektami gra cyklicznie przyspiesza dwukrotnie. Zresztą sami zobaczcie: Silnik gry Za deaktywację odpowiada obj_controller Obiekty są jako tako poukładane. Mam prośbę, czy ktoś mógłby mi podać przyczynę tego bajzlu i pomóc mi go poskładać? Za pomoc serdecznie dziękuję. A może używasz tej komendy deaktywacji i aktywacji obiektów nie tylko w obj_controller Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 3 Lutego 2011 Autor Udostępnij Opublikowano 3 Lutego 2011 szukałem w kodach, ale nic nie znalazłem. EDIT ZNALAZŁEM TO ! Teraz mam pytanie, jak zrobić, aby wrogowie deaktywowali się w ten sposób, aby poza ekranem nie włazili w ściany itp ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 3 Lutego 2011 Udostępnij Opublikowano 3 Lutego 2011 Deaktywować ściany dalej niż przeciwników. Będą potrzebne 2 regiony. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 3 Lutego 2011 Autor Udostępnij Opublikowano 3 Lutego 2011 GML instance_deactivate_region(view_xview[0]-1024,view_yview[0]-1024,view_wview[0]+1280,view_hview[0]+1280,0,1); instance_activate_region(view_xview[0]-1024, view_yview[0]-1024, view_wview[0]+1280,view_hview[0]+1280,1); instance_activate_object(Major_Reisman); instance_activate_object(Kontrol); instance_activate_object(obj_hud); Mam taki kod na deaktywację ogólną regionu, a jak rozdzielić na konkretne obiekty, żeby parent_blok deaktywowalo dalej a parent_wrog blizej ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TO_mek Opublikowano 4 Lutego 2011 Udostępnij Opublikowano 4 Lutego 2011 Mam taki kod na deaktywację ogólną regionu, a jak rozdzielić na konkretne obiekty, żeby parent_blok deaktywowalo dalej a parent_wrog blizej ? Ja bym zrobił to tak: Deaktywacja (instance_deactivate_region(left,top,width,height,inside,notme) przy inside=false) 1. Wyłączyć wszystko dla regionu mniejszego 2. Włączyć otoczenie 3. Wyłączyć wszystko dla regionu większego 3. Włączyć potrzebne obiekty (hud, Kontrol, Major) chociaż chyba Major i hud jest zawsze wewnątrz stref wiec i tak są aktywne. Tylko tak się zastanawiam o co biega z tym wchodzeniem obiektów pod budynki. Przecież jak wszystko masz zdefiniowane prawidłowo to deaktywując obiekty są one nieaktywne i nie przesuwają się jak ich nie widać a przy aktywacji pojawiają się w miejscu ich wyłączenia. Jedyne logiczne wyjaśnienie to takie, że obiekty otoczenia są większe i są dłużej wyłączone niż obiekty wroga dlatego wróg wchodzi na miejsce gdzie jest dane drzewo czy budynek. Przy okazji zobacz jak masz ustawione wysokość i szerokość (na 1280) a punkt początkowy (lewy, górny ustawiasz na -1024,-1024) więc zostaje ci margines z dołu i z prawej tylko 256 (różnica). Pamiętaj, że trzeci i czwarty parametr określa wysokość i szerokość a nie współrzędne punkt przeciwnego. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 4 Lutego 2011 Autor Udostępnij Opublikowano 4 Lutego 2011 nie bardzo rozumiem co mówisz. Czyli jak zrobić żeby deaktywowało poza viewem 1280x1024 ? Bo coś mówiłeś że deaktywuje daleko poza ekranem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 4 Lutego 2011 Udostępnij Opublikowano 4 Lutego 2011 GML view_xview[0]-256, view_yview[0]-256, view_xview[0] + view_wview[0]+256,view_yview[0] + view_hview[0]+256 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 4 Lutego 2011 Autor Udostępnij Opublikowano 4 Lutego 2011 nie bardzo rozumiem, mam to wpisać zamast tego 1280x1024 ? i Nie będzie mi dekatywować przed zniknięciem z ekranu ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TO_mek Opublikowano 4 Lutego 2011 Udostępnij Opublikowano 4 Lutego 2011 GML view_xview[0]-256, view_yview[0]-256, view_xview[0] + view_wview[0]+256,view_yview[0] + view_hview[0]+256 tez nie tak a tak: GML view_xview[0]-256, view_yview[0]-256, view_wview[0]+512, view_hview[0]+512 dopiero takie coś tworzy obszar wielkości widoku nr 0 + margines 256px wokoło. Pierwsze 2 parametry to umiejscowienie obszaru w uk.współrzędnych, kolejne 2 to wielkość samego obszaru (szerokość i wysokość). Może jeszcze prościej: GML margines:=256 view_xview[0]-margines, view_yview[0]-margines, view_wview[0]+(2*margines), view_hview[0]+(2*margines) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 4 Lutego 2011 Udostępnij Opublikowano 4 Lutego 2011 @up mylisz się, dowód? > https://gmclan.org/up539_12_region.html strzałkami poruszaj kuleczkę. czarna obwódka to view[ 0 ] a czerwona to jego margines. Na wszystko patrzy view[ 1 ] który jest większy od view[ 0 ] dlatego może zobaczyć co się dzieje. EDIT: teraz wstaw sobie zamiast mojego czerwonego prostokąta twój: GML margines = 32; draw_rectangle( view_xview[0]-margines, view_yview[0]-margines, view_wview[0]+(2*margines), view_hview[0]+(2*margines), 1 ); i zobacz co się z nim dzieje. Dobra zwracam honor :P nie zauważyłem że instance_deactivate_regiony mają 2 i 3 argument szerokość i wysokość zamiast po prostu pozycję x2 y2. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 4 Lutego 2011 Administratorzy Udostępnij Opublikowano 4 Lutego 2011 Czemu dezaktywujesz region a nie obiekty ? może to jest powód? daj wszystkim przeciwnikom wspólnego ojca (nowy obiekt, bez akcji, bez sprite) i wtedy dezaktywując ten obiekt, dezaktywujesz też wszystkie potomne (można to też wykorzystać do kolizji, kolizja z ojcem zadziała też do wszystkich dzieci). Drugiego ojca ustawiasz dla otoczenia (ściany, drzewa, podłogi, co tam chcesz). Gracza głównego, ani obiektów jakkolwiek sterujących grą nigdy nie dezaktywujesz w ten sposób. Edit: GML instance_deactivate_object(objTata); instance_activate_region(...); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 5 Lutego 2011 Autor Udostępnij Opublikowano 5 Lutego 2011 no to mam parenty do obu typów obiektów dla wrogów: "parent_wroga" dla ścian itp: "parent_blok" i to ma być tylko tak: GML instance_deactivate_object(parent_wroga); instance_activate_region(view_xview[0]-256, view_yview[0]-256, view_wview[0]+512, view_hview[0]+512); Dobrze ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności ANtY Opublikowano 5 Lutego 2011 Filar Społeczności Udostępnij Opublikowano 5 Lutego 2011 No to sprawdź czy ci działa ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 6 Lutego 2011 Autor Udostępnij Opublikowano 6 Lutego 2011 GML instance_deactivate_object(parentwroga); instance_activate_region(view_xview[0]-256, view_yview[0]-256, view_wview[0]+512,view_hview[0]+512,1); instance_deactivate_object(parent_blok); instance_activate_region(view_xview[0]-456, view_yview[0]-456, view_wview[0]+612,view_hview[0]+612,1); Dałem coś takiego. Ale te łajzy nadal włażą na meble ściany itp. Czasami nawet przez nie przełażą. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę