Skocz do zawartości

Dno


Nightem

Rekomendowane odpowiedzi

Witam.

Mam pytanie: Czy da się jakoś zrobić efekt dna oceanu? A dokładniej chodzi mi o coś takiego: Mam sobie obiekt o_wall. Gdy postać jest 'na powierzchni' sprite tej ściany jest szary, a kiedy postać znajdzie się pod wodą wtedy sprite robi się niebieski i zaczyna falować. Czy muszę robić osobną animację czy da radę to załatwić kodem?

Odnośnik do komentarza
Udostępnij na innych stronach

jakies proste falowanie mozna by tez zrobic za pomoca :

GML
draw_primitive_begin_texture(kind,texid) Start a primitive of the indicated kind with the given texture.

draw_vertex_texture(x,y,xtex,ytex) Add vertex (x,y) to the primitive with position (xtex,ytex) in the texture, blending with the color and alpha value

set before. xtex and ytex should normally lie between 0 and 1 but also larger values can be used, leading to a repetition of the texture (see below).

draw_vertex_texture_color(x,y,xtex,ytex,col,alpha) Add vertex (x,y) to the primitive with position (xtex,ytex) in the texture, blending with its own

color and alpha value.

draw_primitive_end() End the description of the primitive. This function actually draws it.

uzywajac naprzyklad kind= pr_trianglestrip i funkcji sin
Odnośnik do komentarza
Udostępnij na innych stronach

v GM help jest troche srogi tu jest malutki przyklad

GML
Information about object: o_wall

 

Sprite: sprite0

Solid: false

Visible: true

Depth: 0

Persistent: false

Parent: <no parent>

Mask: <same as sprite>

 

Create Event:

execute code:

 

// ustawienie parametrow

_spriteid=sprite4 //dowolny sprite

_textid=sprite_get_texture(_spriteid,-1);

_xsta=x;

_ysta=y;

_xend=_xsta+sprite_get_width(_spriteid);

_yend=_ysta+sprite_get_height(_spriteid);

_spd=0;

_sizekoef=8;

_spdkoef=.2

 

 

Draw Event:

execute code:

 

// falowanie sprite

_spd+=_spdkoef;

var _offs, _offc;

_offs=sin(_spd);

_offc=cos(_spd);

draw_set_color(c_white);

draw_primitive_begin_texture(pr_trianglestrip,_textid); // uzywasz texture na tyle triangli ile trzeba

draw_vertex_texture(_xsta+_offc*_sizekoef,_ysta+_offc*_sizekoef,0,0);

draw_vertex_texture(_xsta+_offs*_sizekoef,_yend+_offc*_sizekoef,0,1);

draw_vertex_texture(_xend+(_offs*1.8)*_sizekoef,_ysta+_offc*1.2*_sizekoef,1,0);

draw_vertex_texture(_xend+(_offs*1.2)*_sizekoef,_yend+_offs*1.8*_sizekoef,1,1);

draw_primitive_end();

// original rozmiar sprite

draw_set_color(c_black);

draw_rectangle(_xsta,_ysta,_xend,_yend,1);

_offc a _offs uzyj dowolnie :) to tylko przyklad mozliwosci jak ukladac triangle

trianglesq.png

Odnośnik do komentarza
Udostępnij na innych stronach

ktora wersja GM? w GM:S da sie to banalnie shaderem uzyskac. Moge pokazac jak.

Odnośnik do komentarza
Udostępnij na innych stronach

powierzchnia wody ma falowac, czy ma byc plaska?

Odnośnik do komentarza
Udostępnij na innych stronach

To znaczy tak: sprite wody to niebieski kwadrat o wymiarach 16x16 z ustawionym image_alpha = 0.5. Chciałbym żeby ten obiekt 'zniekształcał' sprite obiektów znajdującym się pod nim. Sposób w jaki ustawiam tą wodę jest taki: Po stworzeniu poziomu, który ma być 'pod wodą' nakładam na niego obiekt o_water, który ma depth = -9 żeby zmieniał kolor spriteów pod nim na niebieski. Fajnie by było gdyby ta woda oprócz zmiany koloru spriteów pod nią również je zniekształcała. Nie wiem czy nie zamotałem zbytnio ale chyba się połapiesz o co mi chodzi :)

Odnośnik do komentarza
Udostępnij na innych stronach

jasne! to będzie niemalże banał :D klepne dziś po pracy, spodoba Ci się :)

Odnośnik do komentarza
Udostępnij na innych stronach

Zrobiłem, integracja z projektem powinna być prosta: http://www.dropbox.com/s/e15o41gd2x31q67/UnderWater.gmz

W ruchu wygląda lepiej:

psl_underwater.PNG

Odnośnik do komentarza
Udostępnij na innych stronach

tylko GameMaker:Studio to odtwarza. aby w nim to otworzyć, musisz zaimportować projekt, zamiast go otwierać.

Odnośnik do komentarza
Udostępnij na innych stronach

to samo nie przejdzie w GM starszym, niz GM:S. jak bede w domu, zrobie Ci paczke z projektem, zamiast archiwum, moze wtedy odpali.

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