Skocz do zawartości

(GM:S) Światło


Flame

Rekomendowane odpowiedzi

Witajcie,

Nie mam pomysłu jak zrobić aby światło nie wchodziło na dany obiekt. Szukałem też trochę po forum lecz odpowiedzi nie znalazłem.

Jak widzicie na Screenie ściana jest oświetlona i nie wiem co zrobić aby tak nie było tzn. nie chodzi mi o jakieś skomplikowane zachowania się świateł pod kątem. Chodzi mi o to jak to zrobić żeby dany obiekt nadal pozostawał ciemny gdy znajduje się w promieniu rysowanego światła ?

 

kod:

GML
event draw

 

var r, bbb, i;

r=75 //promień

bbb=15 //zanikanie koła, zmiana liczb koł

 

surface_set_target(global.light)

 

 

draw_clear_alpha(c_black,0.9);//Przyciemnienie

draw_set_blend_mode(bm_subtract);

 

draw_set_alpha(1/bbb);

 

for (i=0; i<=bbb; i+=1)

{

draw_circle(obj_player.x, obj_player.y, (r-(r/bbb*i)), false);

}

 

draw_set_alpha(1);

draw_set_blend_mode(bm_normal);

surface_reset_target();

Odnośnik do komentarza
Udostępnij na innych stronach

Potrzebujesz:

-Dokumentację

-wyszukać w niej draw_primitive_begin

-znać trochę trygonometrii

 

 

Za długo by tłumaczyć. Być może zedytuje ten post lub napiszę nowy, być może nie.

Ale wskazówki już masz.

Odnośnik do komentarza
Udostępnij na innych stronach

Ten draw_circle rysuje po surface na biało?

Bo jak tak to możesz po pętli z draw_circle zrobić drugą pętle która weźmie obiekty w obszarze i je na tym surface narysować ale na czarno.

 

Chyba że to działa na odwrót to wtedy nie mam pomysłu.

Odnośnik do komentarza
Udostępnij na innych stronach

Huder, chcialem to na poczatku zaproponowac, ale to nie zalatwi sprawy ze swiatlem po drugiej stronie bloku.

Oraz wymagałoby zmiane surface z przeźroczystego na czarno-biały, zamianę na sprite a potem rysowanie z alphy na sprite. A nie, przecież i tak by nadrysowało tym samym spritem.

Dlatego vertexy.

Odnośnik do komentarza
Udostępnij na innych stronach

Huder, chcialem to na poczatku zaproponowac, ale to nie zalatwi sprawy ze swiatlem po drugiej stronie bloku.

Dlatego vertexy.

Jutro spróbuje ogarnąć, dzięki wam za odpwiedzi :)

I am Vader - Blok jest na tyle duży ,że promień rysowanego koła nie dociera za ścianę ale spróbuje, choć trygonometrii w gimbazie jeszcze nie mieliśmy...

Odnośnik do komentarza
Udostępnij na innych stronach

cóż, jeżeli nie dociera poza to proste

GML
with(nazwa_obiektu_bloku)

{

draw_self();

}

dopisane za "draw_set_blend_mode(bm_normal);" starczy.

 

Zakładając, że wszystko jest takie ciemne z natury, a nie nakładasz ciemną warstwę.

Odnośnik do komentarza
Udostępnij na innych stronach

Dzięki draw_self() pomógł w rozwiązaniu problemu :) .

A pomysł z depth nie działa mimo zmniejszenia depthu obiektu odpowiadającego za światło jak i surfacea w kodzie (również dla upewnienia powiększałem depth ściany). A może jednak depth nie działa na surfaceach , albo czegoś nie ogarniam :/.

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ę...