TO_mek Opublikowano 17 Marca 2011 Udostępnij Opublikowano 17 Marca 2011 Witam! Mam w jeden obiekt odpowiadający za rysowanie na roomie sprajtów nie będących obiektami. Obiekt ten rysuje zarówno HUDa (który zawsze musi być na pierwszym planie) jak i elementy grafiki znajdujące się "w głębi" rooma które mają być na ostatnim planie np. obrazki wiszące na ścianie itp. (widok z boku jak w platformówce). Pomiędzy HUDem a takimi przykładowymi obrazkami chodzą postacie przeciwników (osobne obiekty) oraz hero. Problem w tym, że nie da się tak ustawić parametrów depth obiektu rysującego aby obiekty hero i przeciwników "wchodziły" między HUDa a obrazki bo albo chodzą "na" HUDzie albo "pod" obrazkami. Czy jest jakiś sposób aby za pomocą tego jednego obiektu odpowiadającego za rysowanie uzyskać efekt taki jaki potrzebuję? Wspomnę, że ustawianie odpowiedniej "głębokości" parametrem depth tuż przed rysowaniem HUDa i obrazków nie daje żadnego efektu. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Platyna Opublikowano 17 Marca 2011 Udostępnij Opublikowano 17 Marca 2011 Najprostsza z odpowiedzi brzmi: NIE Bo GM sam w sobie nie pozwala na coś takiego. Nie daje nam nic co mogłoby nam coś takiego ułatwić. Ale można to objeść. Należy zrobić jakiś obiekt, który będzie odpowiedzialny za rysowanie WSZYSTKIEGO w odpowiedniej kolejności. Dla ułatwienia inne obiekty mogą mieć to co zwykle mają w draw np. w User Event. Wtedy same nie będą tego wykonywać, a nasz obiekt rysujący może dla każdego obiektu te User Event wykonać. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TheMarcQ Opublikowano 18 Marca 2011 Udostępnij Opublikowano 18 Marca 2011 aby zrobic co chciales musialbys wlasnie zrobic jak powiedzial platyna, czyli rysowac WSZYSTKO w jednym obiekcie w odpowiedniej kolejnosci, czyli im dalej ma byc tym wczesniej musi byc rysowany: GML draw_tlo draw_potworki draw_bohater draw_hud Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TO_mek Opublikowano 18 Marca 2011 Autor Udostępnij Opublikowano 18 Marca 2011 aby zrobic co chciales musialbys wlasnie zrobic jak powiedzial platyna, czyli rysowac WSZYSTKO w jednym obiekcie w odpowiedniej kolejnosci, czyli im dalej ma byc tym wczesniej musi byc rysowany: GML draw_tlo draw_potworki draw_bohater draw_hud No tak ale warunkiem jest to, że musiałbym także obsługiwać rysowanie sprajtów obiektów potworków i bohatera, bo to że w odpowiedniej kolejności to wiem bo chociażby HUDa mam z kilku kawałków zachodzących na siebie. Chyba na obecnym etapie mojego projektu dodam drugi obiekt rysujący który będzie rysował grafiki na ostatnim planie (czyli te za hero i przeciwnikami) a ten pierwszy który mam teraz będzie odpowiadał za rysowanie HUDa (czyli za plan pierwszy). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 18 Marca 2011 Administratorzy Udostępnij Opublikowano 18 Marca 2011 Nawet jak tak robię w swoich projektach, więc się nie martw. Dosłownie dzisiaj w nocy była dyskusja aby w GM 8.1 dodać funkcję draw_set_depth();, ale wymaga ona sporo zmian i na pewno nie będzie jej w GM 8.1, o ile w ogóle. Z tego co wiem, przed eventem draw instancje są sortowane wg wartości depth (np. zmienionej w stepie), i na tej podstawie rysowane, niczym na warstwach w fotoszopie. Zmiana deptha w evencie draw nic nie zmienia tak naprawdę (ustawionia wartość w kolejnym stepie jest sortowana przed eventem draw, zatem choćbyśmy 10 razy ją zmieniali po drodze, ustawiona będzie tylko ta ostatnia wartość, bo to ona jest aktualną). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kt1117 Opublikowano 18 Marca 2011 Udostępnij Opublikowano 18 Marca 2011 Przydał by się jeszcze Event not Collision. ontopic: Sposobem Platyny najlepiej i najmniej roboty. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawidds Opublikowano 18 Marca 2011 Udostępnij Opublikowano 18 Marca 2011 Dosłownie dzisiaj w nocy była dyskusja aby w GM 8.1 dodać funkcję draw_set_depth();, ale wymaga ona sporo zmian i na pewno nie będzie jej w GM 8.1, o ile w ogóle.Rozwiń trochę Twoją wizję tego jak miało by to działać, bo jak dla mnie technicznie nie jest możliwe narysowanie czegoś _pod_ wcześniej narysowanym obiektem (a na pewno nie pod półprzezroczystym). W gmie nic nie jest sortowane, a już na pewno nie co stepa (zrób sobie test i zobacz ile by trwało sortowanie listy nawet 1k elementów 60 razy na sekundę) - po prostu w momencie tworzenia instancji jest ona wstawiana do kolekcji instancji od razu w odpowiednim (według depthu) miejscu. Ewentualna zmiana depthu wymusza po zakończeniu eventu draw (albo gdzie indziej, to akurat nieistotne) przestawienie tej konkretnej instancji w inne miejsce. Nie można narysować czegoś POD wcześniej narysowanym półprzezroczystym spritem, więc jeśli miała by istnieć możliwość zmiany depthu podczas rysowania to tylko tych instancji, które ZA CHWILĘ mają zostać dopiero narysowane. Tej, którą właśnie rysujemy nie można narysować _wcześniej_, co najwyżej można ją przesunąć kawałek dalej i wykonać drawa jeszcze raz _za chwilę_, ale to też by było troszkę pozbawione sensu (wykonywać draw dwa razy w czasie jednej klatki?). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kt1117 Opublikowano 18 Marca 2011 Udostępnij Opublikowano 18 Marca 2011 Mogli by przed wykonaniem draw'u, prześledzić kod w poszukiwaniu tej komendy. E:Dodatkowo następna pozycja w zakładce Error, w GGS, zezwalaj na komende:draw_set_depth (zmniejszy prędkość kodu). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Platyna Opublikowano 18 Marca 2011 Udostępnij Opublikowano 18 Marca 2011 No generalnie sortowanie po depthu co klatkę tak jak mówi Dawidds to absurd by było. Ja sobie wyobrażam jakiś kopiec czy raczej drzewko czerwono-czarne. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 18 Marca 2011 Administratorzy Udostępnij Opublikowano 18 Marca 2011 Czy przestawienie elementu w drzewie nie jest sortowaniem? Jeśli co stepa utawię depth na wartosć losową, to nie będę miał co stepa sortowania? Omówiłem to ogólnikowo, bo kodu GM nie znam. Co do draw_set_depth() to nie ja wymyśliłem, ale ktoś z GMCommunity, ale pomysł odrzucono. 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ę