pamparampa Opublikowano 29 Sierpnia 2010 Udostępnij Opublikowano 29 Sierpnia 2010 jak się robi, że ma mi przy włączaniu gry rysować na planszy sprity (funkcja draw sprite? i pewnie jeszcze jakieś surface) W dodatku zeby dało się ustawić alpha Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
candy Opublikowano 29 Sierpnia 2010 Udostępnij Opublikowano 29 Sierpnia 2010 draw_sprite_ext(sprite,subimg,x,y,xscale,yscale,rot,color,alpha) Draws the sprite scaled with factors xscale and yscale and rotated counterclockwise over rot degrees. color is the blending color (use c_white for no blending) and alpha indicates the transparency factor with which the images is merged with its background. A value of 0 makes the sprite completely transparent. A value of 1 makes it completely solid. This function can create great effect (for example partially transparent explosions). Funkcję wrzucasz do event DRAW. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pamparampa Opublikowano 29 Sierpnia 2010 Autor Udostępnij Opublikowano 29 Sierpnia 2010 Wpisałem "draw_sprite_ext(spr_drzewo1_cien,0,x,y,0,0,0,c_white,0.70)" i mi nic nie rysuje (w dodatku obiekt w którym jest ten kod staje się niewidoczny) Edit: już działa zmieniłem xscale i ysclae na 1 ale jak obiekty się na siebie nakładają to alpha się chyba sumuje co zrobić żeby tak się nie działo? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
candy Opublikowano 29 Sierpnia 2010 Udostępnij Opublikowano 29 Sierpnia 2010 "Zsumuje" Ci się, ponieważ jest coraz więcej obiektów na sobie. Wyobraź sobie, że nakładasz na siebie torebki foliowe. Gdy jest ich mało, widzisz co jest po drugiej stronie. Gdy jest ich coraz więcej, zaczynasz widzieć coraz mniej i obraz jest bardziej "ciemny". Tutaj masz to samo. Co zrobić aby tak się nie działo? Jedynie co mi przychodzi do głowy, to sprawdzać z iloma obiektami dany obiekt ma kolizję. Gdy jest ich więcej niż, załóżmy 5, to już nie każemy mu rysować sprite'a. Ma to swój minus. Obiekt przestaje być widoczny co sugeruje, że go nie ma, mimo że dalej istnieje. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
iczigo Opublikowano 29 Sierpnia 2010 Udostępnij Opublikowano 29 Sierpnia 2010 Nie wiem czy to pomoże ale spróbuj zmienić depth jednego z obiektów, a jeśli się nie da stwórz pętle. GML for(i=y_obrazka,i<obrazek.długość,i+=1) { if(!position_empty(x_obrazka,i) { col=draw_getpixel(x_obrazka,i) draw_point_color(x_obrazka,i,col-1000) } } Tak oto zabezpieczasz 1 linijkę obrazka zrób tak z każdą zmieniając tylko argument x_obrazka (możesz to zrobić pętlą) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
DobryZiom Opublikowano 29 Sierpnia 2010 Udostępnij Opublikowano 29 Sierpnia 2010 a nie for(i=y_obrazka;i<obrazek.długość;i+=1;) ?? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
iczigo Opublikowano 29 Sierpnia 2010 Udostępnij Opublikowano 29 Sierpnia 2010 Tak masz rację. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TheMarcQ Opublikowano 29 Sierpnia 2010 Udostępnij Opublikowano 29 Sierpnia 2010 nie rzeba się męczyć z draw_sprite_ext(spr_drzewo1_cien,0,x,y,0,0,0,c_white,0.70) wystarczy: draw_set_color(c_white) draw_set_alpha(0.7) draw_sprite(sprite,0,x,y) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pamparampa Opublikowano 29 Sierpnia 2010 Autor Udostępnij Opublikowano 29 Sierpnia 2010 sposobu iczigo nie rozumiem i game maker chyba też nie rozumie, bo spritów mi nie rysuje. Za to strasznie spowalnia grę Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TheMarcQ Opublikowano 29 Sierpnia 2010 Udostępnij Opublikowano 29 Sierpnia 2010 bo jestes głupi i skopiowałeś na chama zamiast się przyjrzeć i zobaczyć że nie ma czegoś takiego jak np. obrazek.długość w gm :/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pamparampa Opublikowano 29 Sierpnia 2010 Autor Udostępnij Opublikowano 29 Sierpnia 2010 właśnie że się przyglądałem i też stwierdziłem że jest głupi :jezor: no ale mimo wszystko spróbowałem go w praktyce i nie działa. Ma ktoś jakiś inny pomysł? Wiem że było już podobne pytanie na forum i ktoś odpisał "Rysuj na surface'a bez alphy, a potem surface'a z alphą na ekran" Tylko że nie wiem czy to by było skuteczne i w ogóle się nie znam na tych surface'ach Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
matik97 Opublikowano 29 Sierpnia 2010 Udostępnij Opublikowano 29 Sierpnia 2010 Ja bym to jednak zrobił tak (jeśli dobrze zrozumiałem, że chodzi o coraz ciemniejsze rysowanie obrazka, że image_alpha = alpha, w create ustawiasz alpha = 0 a w stepie np. if alpha < 1 {alpha += 0.01} Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 29 Sierpnia 2010 Udostępnij Opublikowano 29 Sierpnia 2010 A ja bym użył jednego surface, narysował na nim cienie bez alpha, a później na ekranie surface z alpha. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pamparampa Opublikowano 29 Sierpnia 2010 Autor Udostępnij Opublikowano 29 Sierpnia 2010 tylko jak się te surface robi? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 29 Sierpnia 2010 Udostępnij Opublikowano 29 Sierpnia 2010 surface_create. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
matik97 Opublikowano 29 Sierpnia 2010 Udostępnij Opublikowano 29 Sierpnia 2010 A ja bym użył jednego surface, narysował na nim cienie bez alpha, a później na ekranie surface z alpha. Właśnie o tym mówię. Ja w swojej grze użyłem caegoś takiego, że jak gracz przegrywa to ekran się powoli zaciemnia, a jak jest całkiem ciemny to restartuje poziom. Nie wiem, czy zrobiłem to profesjonalnie, ale stworzyłem surface,a o wymiarach view'a i dałem w drawie rysowanie czarnego prostokąta o wspomnianej wyżej alphie, która staje się coraz wyższa. Chyba że ci chodzi o to, że zamiast ustalać alphy obrazku na surfejsie (nie wiedziałem jak to odmienić) to używasz alphy całego surface'a. Edit: a że się tak zupełnie nie na temat zapytam. Po co są te rangi czy jak to tam nazwać przy profilu każdego użytkownika i jak się je zdobywa? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 29 Sierpnia 2010 Udostępnij Opublikowano 29 Sierpnia 2010 Cholera... co? Człowieku, o czym Ty piszesz. To będzie działać jakoś tak: Create s = surface_create( 640, 480 ); surface_set_target( s ); draw_clear_alpha( c_white, 0 ); surface_reset_target(); Step surface_set_target( s ); draw_clear_alpha( c_white, 0 ); with( obiektyZCieniem ) { draw_sprite( cien, 0, x, y ); } surface_reset_target(); Draw draw_surface_ext( s, 0, 0, 1, 1, 0, c_white, 0.7 ); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
matik97 Opublikowano 29 Sierpnia 2010 Udostępnij Opublikowano 29 Sierpnia 2010 I po co te nerwy, chciałem pomóc. Mówiłem, że to nie jest profesjonalne rozwiązanie. :jezor: edit: a poza tym, to to twoje rozwiązanie wygląda podobnie do mojego, tyle że ty użyłeś kodu i zrozumiale się wysłowiłeś XD Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 29 Sierpnia 2010 Udostępnij Opublikowano 29 Sierpnia 2010 Kocham ludzi którzy uważają, że się denerwuję gdy nie używam emotikonek! matik97, jeśli jeszcze nie zauważyłeś Twoje rozwiązanie nie ma nic wspólnego z moim. pamparampa, niemniej, zalecam zajrzeć do dokumentacji i oswoić się z jej zawartością, surface nie jest takie trudne w obsłudze. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
matik97 Opublikowano 29 Sierpnia 2010 Udostępnij Opublikowano 29 Sierpnia 2010 Ja używam surface'ów od jakichś 2 tygodni, a od tygodnia je jako tako pojmuje XD. Edit: Tymon, porównaj sobie nasze wieki. Już nawet nie chodzi o znajomość gml'a, a o logikę i wykształcony umysł. Błądzić jest rzeczą ludzką, a ja jestem (mam nadzieję) człowiekiem ;-) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 29 Sierpnia 2010 Udostępnij Opublikowano 29 Sierpnia 2010 Dalej Cię nie rozumiem. Generalnie, z tego co napisałeś wynika, że używasz surface do "wyciemniania" rooma. Nie chcę burzyć Ci dzieciństwa, ale zwykłe draw_rectangle z użytym draw_set_alpha by rozwiązało problem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
matik97 Opublikowano 29 Sierpnia 2010 Udostępnij Opublikowano 29 Sierpnia 2010 Dalej Cię nie rozumiem. Generalnie, z tego co napisałeś wynika, że używasz surface do "wyciemniania" rooma. Nie chcę burzyć Ci dzieciństwa, ale zwykłe draw_rectangle z użytym draw_set_alpha by rozwiązało problem. Mój kod wygląda mniej więcej tak (nie podam dokładnego, bo mi się akurat dysk twardy w komputerze posypał i wysiadły mi windowsy, a z internetu korzystam przez linuxa. Otóż jest sobie pewien kontroler, który sprawdza, czy energia gracza nie jest przypadkiem równa 0. ma on w create alpha ustawione na 0, i jeśli energia gracza wynosi 0, to tworzy on surface'a (żeby uniknąć odpowiedzi, że jestem debilem, w tym momencie ustawia moją zmienną screate na false, co zapobiega kilkukrotnemu tworzeniu surface'a) i dodaje on do zmiennej alpha jakąś tam wartość, dopóki alpha jest mniejsze od 1. Natomiast w draw ma on kod na rysowanie na surfejsie (i znów problemy z odmianą) czarnego prostokąta o alphie równej zmiennej alpha. Tak więc doskonale wiem, że zwykłe rysowanie prostokąta załatwia sprawę. :thumbsup: edit: Tymon, ciekawe dyskusje można z Tobą prowadzić XD Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 29 Sierpnia 2010 Udostępnij Opublikowano 29 Sierpnia 2010 Więc, po co właściwie ten surface? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
matik97 Opublikowano 29 Sierpnia 2010 Udostępnij Opublikowano 29 Sierpnia 2010 Żeby głupi miał zagadkę XD. A tak właściwie to po to, że jak będę chciał dorabiać jakieś efekty to chyba łatwiej mi będzie na surfejsie to zrobić. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pamparampa Opublikowano 30 Sierpnia 2010 Autor Udostępnij Opublikowano 30 Sierpnia 2010 Sposób tymona prawie działa ale dzieją się dziwne rzeczy. Przycina mi niektóre cienie w różnych miejscach. Wygląda to tak: https://gmclan.org/uploader/5459/Cienie.jpg Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 30 Sierpnia 2010 Udostępnij Opublikowano 30 Sierpnia 2010 Może sprite nie ma ustawionej przezroczystości? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pamparampa Opublikowano 30 Sierpnia 2010 Autor Udostępnij Opublikowano 30 Sierpnia 2010 Sprity są całkowicie nieprzezroczyste ale jak robię je przezroczyste to dzieje się to samo Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 30 Sierpnia 2010 Udostępnij Opublikowano 30 Sierpnia 2010 Nie wierzę, podrzuć mi źródło, nawet na PW. :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 31 Sierpnia 2010 Udostępnij Opublikowano 31 Sierpnia 2010 O dziwo rysowanie na surfacey nie mieszają kanałów ( patrz: alpha ). Musisz pobawić się blendinkiem samodzielnie i. e. https://gmclan.org/up1717_11_Shadow.html, nie wiem czy to dokładnie to ( Nie mam jak tego sprawdzić, chociażby poprzez brak GMa ) 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ę