Skocz do zawartości

Surface - Obiekty mają byc niewidoczne


Rekomendowane odpowiedzi

Użyłem za zgodą Nikasa kod z jego gry na światło wokół gracza. No i teraz nie wiem jak zrobić żeby obiekty były niewidoczne pod ciemnościami.

Kod:

Surfaces:

Create:

GML
surf=surface_create(room_width,room_height)

Step:

GML
color=merge_color(c_black,c_white,2) //tworzymy mieszanke kolorów

surface_set_target(surf)//właczmy tryb rysowania po surface

draw_clear(color) // czyścimy surfaca

draw_set_blend_mode(bm_subtract) // ustawaimy blend mode "odwrocenie koloru"

draw_circle_color(swiatlo.x,swiatlo.y,200,color,c_black,0) //rysujemy okrąg ktory bedzie swiatlem

draw_set_blend_mode(bm_normal) //ustawiamy normalny tryb blendingu...

surface_reset_target()// konczymy tryb rysowania

Draw:

GML
draw_set_blend_mode(bm_subtract)//ponownie odwracamy kolory

draw_surface(surf,0,0)//rysujemy surfaca

draw_set_blend_mode(bm_normal)//i ustawiamy normalny blending xD

Swiatlo:

Step:

GML
y=o_player.y

x=o_player.x

Odnośnik do komentarza
Udostępnij na innych stronach

obiekt "ciemności" musi mieć najmniejszy depth ze wszystkich obiektów sceny. np. depth=-10000

Odnośnik do komentarza
Udostępnij na innych stronach

no ale takowego obiektu nie ma ;/.. chyba ze wszystkim obiektom podwyzsze depth-a

edit: ok działa

edit: aha obiektu surfaces moglem zmniejszyc

 

POŁĄCZONO:

 

EDIT:

Czemu, gdy robie drugi obiektz oddzielnym 'swiatlem' i 'surfacem' i ustawiam dobrze x i y to wychodzi jakies jedno koło z światła które jest w kształcie fasoli?

Odnośnik do komentarza
Udostępnij na innych stronach

obiekt "ciemności" powinien być tylko jeden w roomie, zaś świateł może być wiele.

Odnośnik do komentarza
Udostępnij na innych stronach

No tak, nie zauważyłem głupiego błędu (który swoja drogą mogłeś poprawić...). Id surface'a jest trzymany w zmiennej surf, która jest zmienną lokalną, więc nie dostaniemy się do niej z poziomu innego obiektu. Po prostu zapisz id nowo utworzonego surface do zmiennej globalnej (global.surf).

Odnośnik do komentarza
Udostępnij na innych stronach

ja poprostu wsadziłem ten kod do obiektu surfaces ktory jest odpowiedzialny za światło wokol playera.. czyli zrobic inny obiekt i on ma miec odzielny 'surf' czy ma miec ten sam surf co od playera tylko ze wtedy zrobic global.surf?

 

edit: zrobilem tak i znowu myszka lata a granat nie swieci ale go widac w ciemnosciach xd

Odnośnik do komentarza
Udostępnij na innych stronach

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...