Sutikku Opublikowano 3 Września 2014 Udostępnij Opublikowano 3 Września 2014 Witam. Posiadam bardzo ubogi ale spełniający zadanie system "światła". Najpierw pokaże kod, a potem przedstawię problem. GML (Create) nowy=surface_create(room_width,room_height)// tworzenie surface alpha=0 alarm[0]=30 GML (Alarm0) //Tutaj tylko sprawdzam aktualna godzine, nic nie rysuje</span> GML (Step) surface_set_target(nowy) draw_set_alpha(alpha) draw_set_color(c_black) draw_rectangle(0,0,room_width,room_height,0) //tutaj jest chyba problem if obj_player_self.latarka==true { with(obj_player_self){draw_set_blend_mode(bm_src_color) draw_circle(self.x,self.y,60,0) }} draw_set_blend_mode(bm_normal) surface_reset_target() GML (draw) draw_surface(nowy,view_xview,view_yview) // tutaj duzo zmienialem, nawet nie pamietam poczatkowych wartosci draw_text(8,70 ,alpha) Kod się różni od jego początkowej wersji, bo cały czas coś zmieniałem, aż się pogubiłem ;p Problem polega na tym, że jest duży room, więc zamiast 60fps widzę 10-20. Wiem, że muszę rysować surface tylko na ekranie, a nie na cały room, ale właśnie nie wiem jak to zrobić. Kombinowałem z view_xview, ale wtedy latarka źle się rysowała i draw_rectangle, na początku rysował tylko połowę ekranu, trzeba było 'poruszać' viewem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 3 Września 2014 Udostępnij Opublikowano 3 Września 2014 GML (create) nowy=surface_create(view_wview, view_hview)// tworzenie surface alpha=0 alarm[0]=30 GML (step) surface_set_target(nowy) draw_clear_alpha(0, 0); if obj_player_self.latarka==true { with(obj_player_self) { draw_set_blend_mode(bm_src_color) draw_circle(x-view_xview, y-view_yview, 60, 0) draw_set_blend_mode(bm_normal) } } surface_reset_target() GML (draw) draw_surface(nowy,view_xview,view_yview) // tutaj duzo zmienialem, nawet nie pamietam poczatkowych wartosci draw_text(8,70 ,alpha) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sutikku Opublikowano 3 Września 2014 Autor Udostępnij Opublikowano 3 Września 2014 Dzięki za odpowiedź, ale ten kod też ma widocznie małą wydajność bo teraz z 60fps spadło na 28-38 . I latarka też się źle rysuje. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 3 Września 2014 Udostępnij Opublikowano 3 Września 2014 GML nowy=surface_create(view_wview[0],view_hview[0])// tworzenie surface alpha=0 alarm[0]=30 GML surface_set_target(nowy) draw_clear_(c_black); if obj_player_self.latarka with(obj_player_self) { draw_set_blend_mode(bm_src_color) draw_circle(x-view_xview[0], y-view_yview[0], 60, 0) draw_set_blend_mode(bm_normal) } surface_reset_target() W jakim obiekcie masz wykonywany ten kod? Czy robisz więcej niż jeden taki obiekt? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 3 Września 2014 Administratorzy Udostępnij Opublikowano 3 Września 2014 1. GM:Studio? Rysujemy wtedy na surface w draw. 2. może zamiast with GML draw_set_blend_mode(bm_src_color) draw_circle(obj_player_self.x-view_xview, obj_player_self.y-view_yview, 60, 0) draw_set_blend_mode(bm_normal) chyba, ze tych obiektów jest dużo no to masz odpowiedź - nie rób rysowania dla tych którzy są poza view. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sutikku Opublikowano 3 Września 2014 Autor Udostępnij Opublikowano 3 Września 2014 Mam tylko jeden taki obiekt, chociaż w przyszłości chciałem aby takich okręgów było więcej, ale akurat dla innego obiektu, wtedy będę po prostu sprawdzał czy obiekt nie jest poza ekranem. Spróbowałem robić tak jak na dole i oto efekty. Teraz się wszystko rusza. Na potrzeby tej gry korzystam z Game Makera 8.0 Próbowałem różnych wariacji, dać w Draw, step, z With, bez, efekt taki sam. Aaa zapomniałem dodać. Mam specjalny obiekt, który kontroluję to, nie w playerze. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sutikku Opublikowano 6 Września 2014 Autor Udostępnij Opublikowano 6 Września 2014 BUMP Czy pomoże ktoś? Próbowałem na wiele różnych sposobów, ale nie osiągnąłem celu ;c Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 6 Września 2014 Udostępnij Opublikowano 6 Września 2014 Pokaż chociaż częściowo kod, jak rysujesz surface, oświetlenie etc. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sutikku Opublikowano 6 Września 2014 Autor Udostępnij Opublikowano 6 Września 2014 Tak naprawdę, pierwszy post, to wszystko. Nie jest to żaden niesamowity system cieni, z różnymi kolorami itd. To tylko czarny ekran, z różnym alpha, rysowanym na surface, a światło to tylko rysowanie okręgu. 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ę