Skocz do zawartości

Surface zmienia rozdzielczość.


Judei

Rekomendowane odpowiedzi

Cześć i czołem! Pytacie skąd się... a nie. Ogólnie chciałem was przywitać w tym radosnym dniu, kiedy to zostałem zrzucony przez rząd USA na tyły frontu zachodniego, gdzie źli, podli i wredni naziści po raz to kolejny starają się zdominować świat. Pasaty, które pomyliły miejsce swojego występowania i miast wiać na równiku, przeniosły się na tereny położone na wyższej szerokości geograficznej przeniosły mnie na to forum, bym mógł zasięgnąć porady ludzi bardziej doświadczonych w pewnych aspektach życia, ludzi wyposażonych w słowniki ortograficzne i obdarzonych hojnie przez Zeusa w wiedzę, którą staram się posiąść. O, stąd się wziąłem.

Więc tak, chciałem sobie zrobić coś a'la latarkę i ograniczyć pole widzenia gracza poprzez zabazgranie mu części ekranu na czarno.
GML
global.light_surface = surface_create(view_wview,view_hview);
Skrypt, którym tworzę mojego surface.
GML
surface_set_target(global.light_surface)
draw_clear(c_black)
draw_set_blend_mode(bm_add)

with (object_sightfield)
{
draw_sprite_ext(sprite_light,0,object_man.x-view_xview,object_man.y-view_yview,light_scale,light_scale,image_angle,c_white,0.8)
draw_sprite_ext(sprite_light2,0,object_man.x-view_xview,object_man.y-view_yview,0.3,0.3,0,c_white,0.8)
}

draw_set_blend_mode(bm_normal)
surface_reset_target()

To umieściłem w stepie obiektu, stanowiącego istotę wszechrzeczy, o niezwykle trafnej nazwie: object_control. (Kod zamieszczony jeszcze wyżej znajduje się w jego "Create".

A w drawie mam nawalone masę skryptu, nie mającego wspólnego nic z tym surfacem. No prócz tego:
GML
draw_surface(global.light_surface,view_xview,view_yview);


W efekcie mamy takie cuś:
<<Zdjęcie 1>>
Z wyłączonym obiektem odpowiedzialnym za całe zamieszanie z surfacem.
<<Zdjęcie 2>>
Z włączonym obiektem odpowiedzialnym za surface.

Jak widać, na drugim screenie ucina mi kawałek ekranu, ucina, a może zmienia rozdzielczość i kawałek obrazu znika w czarnej otchłani Hadesu. Nie mam pojęcia, mam nadzieję że jakoś pomożecie mi odkryć, o co tu chodzi.

To był pierwszy problem, teraz drugi, trochę mniejszy, ale dla mnie równie dziwny, moim zdaniem nie powinien występować.
GML
global.a=sound_add("Resources/ARPreload.wav",1,1)
global.b=sound_add("Resources/ARP.wav",1,1)

Definiuje sobie we władcy wszechrzeczy dwa pliki dźwiękowe. (Tak, nazwy i ścieżka są podane dobrze, na 100% pliki istnieją w tym katalogu i na 100% są to odpowiednie pliki.)
Potem odwołuję się do nich w tablicach odpowiedzialnych za definicję poszczególnych broni w object_man (którym jest gracz):
GML
bron[0,13]= global.b //Dźwięk wystrzału
bron[0,14]= global.a //Dźwięk przeładowania</span>

Jest to tylko kawałek całej tablicy. Dalej, podczas gdy gracz strzela mam taki kod:
GML
sound_play(bron[gun,13])

A gdy przeładowuje:
GML
sound_play(bron[gun,14])

I nie ważne jaka operacja zostanie przeprowadzone, tak przy strzelaniu jak i ładowaniu występuję dźwięk przeładowania. Co ciekawsze, jak zamienię kolejność przy definiowaniu całego bajeru, przy każdej operacji mam dźwięk wystrzału.

Zapewne są to jakieś głupie błędy, a mój wątły umysł nie jest w stanie ich dojrzeć. Ale cóż, dlatego tutaj piszę, żebyście mogli mnie oświecić, co mam nadzieję, nastąpi. (Wiem, wiem... nawaliłem strasznie dużo kodu, ale zrobiłem to dlatego, że nie chcę dawać linku do moich wypocin, a bez odpowiednich wiadomości to możecie co najwyżej wlepić mi warna.)

W razie czego, służę podaniem szerszej gammy informacji. ^^
Pozdrawiam, Judei.
Odnośnik do komentarza
Udostępnij na innych stronach

To cały czas jest rysowane na bm_normal, nie wiem gdzie zauważyłeś tam bm_subtract. Zaraz zwyczajnie przepiszę kod, i zobaczymy co będzie się działo, bo jest to dla mnie niezrozumiałe.

 

Edit:

Moje bystre oczka zauważyły, że wszystko wraca do "normy" bo wywaleniu ze stepa linijki surface_reset_target(). Efekt tego zabiegu jest oczywisty, pozbywam się jednego błędu, ale bez tej linijki będziemy mieli klops.

 

Kolejny Edit:

Problem zażegnany, błąd występuje tylko gdy w ustawieniach rooma, w "Port on Screen" w "W" wpiszę wartości większe od 1000. Interesujące, ale teraz działa jak należy.

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