TO_mek Opublikowano 24 Stycznia 2011 Udostępnij Opublikowano 24 Stycznia 2011 Witam! Mam dużego rooma (5000x5000) z widokiem 1024x768. Potrzebuje nadać tłu background_alpha[0] = 0.4 ale chcę to zrobić: - po pierwsze tylko na aktualnie widocznym ekranie gry (widok 1024x768) (jeśli będzie to rozwiązane na obiektach to sobie je wyłączę gdy są poza widokiem), - po drugie, co jest sednem pytania, potrzebuje zrobić kilka obszarów na tym ekranie przyciemnionych a kilka jasnych. Ekran gry przedstawia kolejne pietra budynku, na każdym z pieter może być włączone kilka źródeł światła (obiekty: lampa_obj) i właśnie tylko te miejsca powinny być oświetlone (mieć background_alpha[0] = 1) a pozostałe miejsca przyciemnione (background_alpha[0] = 0.4). Załóżmy że lampy świecą w okręgu o promieniu 100px, najlepiej jeszcze gdyby działało to tak, że im bliżej lampy tym jaśniej czyli taki płynny efekt przejścia do cienia. Dodatkowo światło powinno zatrzymywać się na stropach i ścianach (np. na konkretnym obiekcie sciana_obj). Próbowałem coś zrozumień z przykładu "latarka" pobranego z gmclan ale nie bardzo mi się udaje użyć surfejsów i polecenia draw_set_blend_mode_ext( bm_add, bm_subtract ); (oraz innych) i pojawiają mi się dziwne efekty jakbym miał uszkodzoną kartę grafiki albo w najlepszym przypadku czarny ekran. Mógłby mi to ktoś dokładniej wytłumaczyć. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Makary155 Opublikowano 24 Stycznia 2011 Udostępnij Opublikowano 24 Stycznia 2011 Wprawdzie nie rozumiem dokładnie pytania, ale strzelam że chcesz żeby część była bardziej lub mniej przezroczysta. Przygotuj sprite o tym samym rozmiarze. Namazaj na nim białe obszary - im mniej szary tym większa przezroczystość. Teraz przed akcją rysowania go lub na początku gry daj instrukcję background_set_alpha_from_sprite. Na głównej jest artykul o maskach alpha. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 24 Stycznia 2011 Administratorzy Udostępnij Opublikowano 24 Stycznia 2011 Background rysuje się tylko na aktualnym obszarze gry. W czym problem? Załaduj odpowiednie PNG i tyle. Tylko nie odznaczaj draw background color. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TO_mek Opublikowano 24 Stycznia 2011 Autor Udostępnij Opublikowano 24 Stycznia 2011 Background rysuje się tylko na aktualnym obszarze gry. W czym problem? Załaduj odpowiednie PNG i tyle. Tylko nie odznaczaj draw background color. Aż tak niezrozumiale napisałem pierwszego posta? Robię coś w rodzaju platformówki, mam rooma 5000x5000, ładuje do niego tło na którym mam narysowany przekrój budynku z poszczególnymi piętrami. Teraz chcę aby: - nadać na każdym piętrze przyciemnienie czyli odpowiednik bacground_alpha na ~0.4 - na zewnątrz budynku nadać background_alpha = 1 czyli bez przyciemniania, - na każdym z pięter jest kilka miejsc gdzie są zamontowane lampy, które mają rozświetlić korytarz po ich załączeniu, - lampy mają działać tylko w ograniczonym zakresie czyli świecić wokoło (promień ok. 100px) ale tak by światło nie przechodziło przez stropy, - na koniec jeszcze może efekty typu cień postaci zbliżającej się do źródeł światła oraz być możę drganie światła (coś jak drgający płomień świecy). Mam nadzieję że teraz jest wszystko jasne. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawidds Opublikowano 24 Stycznia 2011 Udostępnij Opublikowano 24 Stycznia 2011 Widok od góry czy od boku? W każdym razie to dość złożone zagadnienie, takie "cienie" w gmie są same w sobie niewydajne, jeśli będziesz chciał dorobić do tego więcej świateł spadniesz spokojnie poniżej magicznej bariery 60 fps. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 24 Stycznia 2011 Administratorzy Udostępnij Opublikowano 24 Stycznia 2011 Mając tło 5000x5000 to już bym sie nad wydajnością zastanawiał... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TO_mek Opublikowano 24 Stycznia 2011 Autor Udostępnij Opublikowano 24 Stycznia 2011 Dawidds: Widok z boku. Mając tło 5000x5000 to już bym sie nad wydajnością zastanawiał... Dlatego tez od razu w pierwszym poście pisałem że efekty chcę ograniczyć do aktualnie widocznego ekranu bo po co mi się ma przeliczać coś czego aktualnie nie widać na ekranie. Ale wyłączenie obiektów z poza aktualne wyświetlanego widoku to już nie problem. Pytanie jak uzyskać efekty światła najmniej tracąc na wydajności. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TO_mek Opublikowano 26 Stycznia 2011 Autor Udostępnij Opublikowano 26 Stycznia 2011 Wprawdzie nie rozumiem dokładnie pytania, ale strzelam że chcesz żeby część była bardziej lub mniej przezroczysta. Przygotuj sprite o tym samym rozmiarze. Namazaj na nim białe obszary - im mniej szary tym większa przezroczystość. Teraz przed akcją rysowania go lub na początku gry daj instrukcję background_set_alpha_from_sprite. Na głównej jest artykul o maskach alpha. Takiej komendy nie ma w gm8 a w sumie częściowo to by rozwiązało problem. Są background_set_alpha_from_background sprite_set_alpha_from_sprite. 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ę