MiChAl200 Opublikowano 24 Sierpnia 2012 Udostępnij Opublikowano 24 Sierpnia 2012 Postanowiłem stworzyć światło w grze. Mam dwa obiekty: "oCiem" i "oSwieca". W oCiem jest taki kod(Create): GML surf=surface_create(room_width,room_height); surface_set_target(surf); draw_set_color(c_black); draw_set_alpha(0.7); draw_rectangle(0,0,room_width,room_height,false); draw_set_alpha(1); surface_reset_target(); A w Draw: GML draw_surface(surf,0,0); A w "oSwieca" ma się tworzyć okrąg odpowiedzialny za światło. GML surface_set_target(surf); draw_set_alpha(0.5) draw_circle_color(x+8,y+8,96,c_white,c_black,false); draw_set_alpha(1); surface_reset_target(); Problem jest taki, że wychodzi błąd, że nie widzi zmiennej "surf" w oSwieca. Nawet zamieniłem: "surf" na "oCiem.surf" i też nie widzi. Nie wiem czemu tego nie widzi. Zrobiłem nawet ta zmienną jako globalną i też nie działa Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 24 Sierpnia 2012 Udostępnij Opublikowano 24 Sierpnia 2012 Zrób ją globalną i upewnij się że w roomie postawiłeś oCiem jako pierwszy. Po za tym już teraz widzę że ten efekt światła będzie kiepski :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MiChAl200 Opublikowano 24 Sierpnia 2012 Autor Udostępnij Opublikowano 24 Sierpnia 2012 Sprawdziłem dokładnie 'oCiem' jest pierwsze (nawet id pokazuje), ale mimo to nie chce działać... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 24 Sierpnia 2012 Udostępnij Opublikowano 24 Sierpnia 2012 Zrób tak: GML (oCiem) zmienna = "działa"; surf=surface_create(room_width,room_height); surface_set_target(surf); draw_set_color(c_black); draw_set_alpha(0.7); draw_rectangle(0,0,room_width,room_height,false); draw_set_alpha(1); surface_reset_target(); GML (oSwieca) show_message(oCiem.zmienna); surface_set_target(surf); draw_set_alpha(0.5) draw_circle_color(x+8,y+8,96,c_white,c_black,false); draw_set_alpha(1); surface_reset_target(); I sprawdź czy wiadomość się wyświetla bo jak tak to coś jest źle z tworzeniem surfaca. Może być zbyt wielki np. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MiChAl200 Opublikowano 24 Sierpnia 2012 Autor Udostępnij Opublikowano 24 Sierpnia 2012 Nie wyświetla, bo zmiennej "zmienna" też nie widzi.. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 24 Sierpnia 2012 Udostępnij Opublikowano 24 Sierpnia 2012 To coś z id jest nie tak. oCiem ma mieć mniejsze. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MiChAl200 Opublikowano 24 Sierpnia 2012 Autor Udostępnij Opublikowano 24 Sierpnia 2012 'oCiem' ma ID - 110121 Obiekty 'oSwieca' (jest ich więcej) - mają ID od 110122 do 110128 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 24 Sierpnia 2012 Udostępnij Opublikowano 24 Sierpnia 2012 IMO powinno działać, ale to GM -_- GML if( variable_global_exists( "surf" ) ) { surface_set_target(surf); draw_set_alpha(0.5); draw_circle_color(x+8,y+8,96,c_white,c_black,false); draw_set_alpha(1); surface_reset_target(); } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MiChAl200 Opublikowano 24 Sierpnia 2012 Autor Udostępnij Opublikowano 24 Sierpnia 2012 Świece wciąż nie działają... Nie mam pojęcia co jest nie tak.. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 24 Sierpnia 2012 Udostępnij Opublikowano 24 Sierpnia 2012 A nie masz czasem gdzieś innego zasobu o nazwie oCiem? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 24 Sierpnia 2012 Udostępnij Opublikowano 24 Sierpnia 2012 A nie masz czasem gdzieś innego zasobu o nazwie oCiem? Ewentualnie sprawdź jeszcze czy to zadziała: GML surface_set_target((110121).surf); draw_set_alpha(0.5) draw_circle_color(x+8,y+8,96,c_white,c_black,false); draw_set_alpha(1); surface_reset_target(); edit: lol cytowałem zamiast edytować post :DD Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 24 Sierpnia 2012 Udostępnij Opublikowano 24 Sierpnia 2012 Zrobiłem mały przykład, u mnie działa https://gmclan.org/up7191_12_surface.html Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MiChAl200 Opublikowano 24 Sierpnia 2012 Autor Udostępnij Opublikowano 24 Sierpnia 2012 Oba kody, które miałem w obu obiektach przeniosłem z Create do Step i działa... HuderLord - miałeś rację efekt światła trochę nie wyszedł, bo jak jedno światło przecina drugie zasłania drugie kolorem czarnym, i przez to nie jest jaśniej. Dzięki za pomoc, ale jeszcze pytanie, czy wiecie jak zrobić, żeby to światło lepiej wyglądało? Bo próbowałem tego draw_set_blend_mode i efekty nie były dobre. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 24 Sierpnia 2012 Udostępnij Opublikowano 24 Sierpnia 2012 Daj przy rysowaniu światła i surface'a: GML draw_set_blend_mode( bm_subtract ); PS: Pamiętaj że po skończeniu rysowania świateł i surface'a ustawić na bm_normal. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 24 Sierpnia 2012 Udostępnij Opublikowano 24 Sierpnia 2012 Używaj: [...] draw_clear_alpha( 0, .5 ); [...] Zamiast rysowania prostokąta na scenę. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 24 Sierpnia 2012 Udostępnij Opublikowano 24 Sierpnia 2012 Rozmiar surfejsa także można zoptymalizować. Twórz go o rozmiarze widoku a nie rooma. A obiekty castujące światło w chwili rysowania na surfejsie przesuń o pozycję widoku. GML surface_set_target(surf); draw_set_alpha(0.5) draw_circle_color(x+8-view_xview,y+8-view_yview,96,c_white,c_black,false); draw_set_alpha(1); surface_reset_target(); I w oCień GML draw_surface(surf,view_xview,view_yview); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MiChAl200 Opublikowano 24 Sierpnia 2012 Autor Udostępnij Opublikowano 24 Sierpnia 2012 Próbuję jakoś zrobić tym draw_set_blend_mode( bm_subtract ) i wtedy jest światło, ale chciałbym zrobić tak bardziej realistycznie, że im bliżej środka tym więcej światła, a im dalej to coraz mniej, a nie że całe kółko tym samym światłem. EDIT: Dobra! Poradziłem sobie! Już jest ok wszystko. Dzięki wszystkim za pomoc :) 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ę