Skocz do zawartości

Draw na surface z replace i alpha 0


Easeful

Rekomendowane odpowiedzi

W jaki sposób można na surface rysować np. sprite lub daną figurę geometryczną ustawiając jej przezroczystość z tym, że nie ma nakładać się na to co jest pod spodem tylko zastępować to miejsce sobą (tak jak w edytorze grafiki funkcja Replace)?

 

 

Edit: czy służy do tego funkcja draw_set_blend_mode()?

Odnośnik do komentarza
Udostępnij na innych stronach

No więc tak: przeczytałem w Game Maker Help jak działa, użyłem subtract mode, wszysto gra ale teraz mam problem z całym surface. W zasadzie to używam tego pierwszy raz i nie wiem co jest źle, ale dzieją się absurdalne rzeczy.

 

GML
surface_set_target(nightsur);

draw_set_alpha(night);

draw_set_color(c_black);

draw_rectangle(0,0,view_wview,view_hview,0);

draw_set_alpha(1);

draw_set_blend_mode(bm_subtract);

draw_circle(oHero.x-view_xview,oHero.y-view_yview,96,0);

draw_set_blend_mode(bm_normal);

surface_reset_target();

 

draw_surface(nightsur,view_xview,view_yview);

 

Nie wiem dlaczego, ale cały surface "fruwa" sobie, co prawda w takim samym kierunku i w tym samym czasie co view, ale porusza się szybciej tak jakby był w ogóle w innej rozdzielczości :C

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

jak masz surface 800x600, a pozycja hero to 1000,200 - no to niestety jest on już poza surface. Może w tym tkwi problem? Surface jest zawsze wypełniane od 0,0, nie ważne jakie masz viewy.

Odnośnik do komentarza
Udostępnij na innych stronach

Racja, racja, pozwól że się wytłumaczę:

 

GML
draw_surface(nightsur,view_xview,view_yview);

 

Liczyłem na to, że surface będzie podążać za viewem. Przepisywałem cały kod poruszania się view'a, wszystko zmieniałem głowiłem się aż się roześmiałem, bo dopiero przed chwilą doszedłem do tego, że surface nie jest rysowany na roomie, tylko bezpośrednio na okienku gry :D

 

 

Edit: Nawet pojawiły się kolejne dziwne problemy, bo efekty (above) są rysowane wyżej niż ów surface a to sprawiło (nie wiem z jakiej racji), że efekty również zaczęły pojawiać się w pozycjach bezwzględnych do okna gry o.O . Ale już to poustawiałem.

Jedyne na co nie mam patentu, to losowe syfne wzory na początku gry na surface, może będę w create po prostu czyścić używając rectangle 800x600 na subtract mode

Odnośnik do komentarza
Udostępnij na innych stronach

Mam jeszcze takie pytanie i prośbę o wyjaśnienie.

 

Aby uzyskać jakiś kolor światła robię tak, że rysuję najpierw na bm_subtract sprite światła, który wycina kawałek mroku, i później w tym samym miejscu rysuję drugi sprite o tym samym kształcie na add lub normal i na alpha 0.2 z tym, że ten sprite jest zakolorowany np. do żółtego. Wiem, że to nie jest dobre rozwiązanie, widziałem w przykładach użycie draw_clear_alpha() ale nie rozumiem za bardzo na czym to polega. Czy mógłby ktoś pokazać jakoś prosto jak to działa i jak to zrobić w najlepszy sposób?

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