Skocz do zawartości

Zabawa Z Prądem


Platyna

Rekomendowane odpowiedzi

Witam

 

Bawiłem się trochę przykładem "Efekt prądu" Ranma_mana (http://www.gmclan.org/index.php?sciagnijplik=26)

Chciałem go tak przerobić, żeby zamiast zwykłych nudnych czarnych kresek ten prąd wyglądał jak prąd :P

 

Więc pozamieniałem funkcje draw_line na moje funkcje draw_piorun które w pętli rysują linie które przy krawędzi są coraz bardziej przezroczyste i coraz bardziej niebieskie (chociaż przed wywołaniem może sobie dowolny kolor pioruna ustawić przez draw_set_color). No i efekt jest całkiem ładny. Nie jest powalający, ale ujdzie :P

No ale to rozwiązanie jest strasznie FPSożerne. Ma ktoś może pomysł jak można by to ładnie zrobić trochę optymalniej?

 

Dziękuję :)

 

P.S.Moja przeróbka przykładu:

http://www.gmclan.org/up348_11_prad.html

 

Jakby co to ta funkcja z dwójką przy nazwie to inna wersja tej funkcji do rysowania piorunów. Trochę brzydsza i jeszcze bardziej żrąca FPSy :P

Odnośnik do komentarza
Udostępnij na innych stronach

To jest cały GM :)

 

A tak serio - zamiast wywoływania kodu masę razy zrób jednego sprite'a, daj mu kanał alpha z innego sprite'a (w sumie to może na blend mode'ach było by wydajniejsze...? A nieważne :P), i maluj tą kreskę z odpowiednią skalą i odpowiednim image_angle, poprzedzone włączeniem GM'owej interpolacji (texture_set_interpolation(1)) - na dodatek AA będziesz miał :P

 

Mam nadzieję, że wiesz, o co mi chodzi...

Odnośnik do komentarza
Udostępnij na innych stronach

No niby kumam. Próbowałem na początku coś w tym stylu (z rysowaniem sprite) ale trochę się chrzaniło.

Tylko gdybym to robił rysując sprita z kanałem alpha to bym chyba musiał stworzyć obiekt "piorun" i nadać mu sprita pioruna i za pomocą sprite_set_alpha_from_sprite (jakoś tak to się tam zwało) zrobić mu alpha. A ja bym wolał bez tworzenia dodatkowego obiektu po prostu drawując sprity.

Blend modem by było lepiej bo bym mógł zamiast tworzyć obiekt po prostu rysować to. Tylko nie bardzo ogarniam te wszystkie mody jak to tam działa.

A do czego texture_set_interpolation(1)? Domyślam się, że jakieś wygładzanie, ale jak to dokładnie działa?

Mógłbyś mi opisać dokładniej te blend mody, albo spróbować zrobić te pioruny to bym to sobie oblukał?

Odnośnik do komentarza
Udostępnij na innych stronach

chyba musiał stworzyć obiekt "piorun" i nadać mu sprita pioruna i za pomocą sprite_set_alpha_from_sprite
Nie :P

sprite_set_alpha_from_sprite() wystarczy użyć raz, nawet w Game Start, i sprite już dla wszystkich obiektów będzie posiadał ustawiony kanał alpha.

 

Blend modem by było lepiej bo bym mógł zamiast tworzyć obiekt po prostu rysować to.
TO co wyżej, jedyna różnica może być w wydajności, choć i tak wydaje mi się, że sprite będzie wydajniejszy... a poza tym mniej roboty z tym będzie :P

 

A do czego texture_set_interpolation(1)? Domyślam się, że jakieś wygładzanie, ale jak to dokładnie działa?
Dokładnie? Namaluj sobie jakiś kwadrat, w Step daj image_angle+=0.1, a w Create daj texture_set_interpolation(1).

 

Mógłbyś mi opisać dokładniej te blend mody, albo spróbować zrobić te pioruny to bym to sobie oblukał?
Sorry, ale po formacie jeszcze GM'a nie zainstalowałem ^_^ Ale chyba gdzieć pisałem mój AA na tym forum, zaraz poszukam...

 

Edit: Mam :P

https://forum.gmclan.org/index.php?showtopi...mp;#entry206489

Edit2: Tylko w Twoim przypadku nie mam "zwykłej" linii tworzonej dynamicznie, a własny sprite pioruna z ustawionym wcześniej kanałem alpha. A, i z originem na środku :P

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