Skocz do zawartości

Particles - z czym to sie je?


Kaara

Rekomendowane odpowiedzi

No właśnie chciałabym sie nauczyć obsługiwać ten "system cząsteczek" ale nijak mi to wychodzi, na gmclanie o ile mi wiadomo nie ma artykułu na ten temat. Czytałam helpa w gm'ie ale czytając przez translator jakoś nie wpoiła mi sie wiedza, czy mógłby ktoś z was, dobrzy ludzie wytłumaczyć na czym to polega lub tez dać jakiś przykład?

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

@Huderlord:

Miałem na myśli dokładny, łopatologiczny, a przede wszystkim abstrakcyjny opis zasad i pojęć stosowanych w systemach cząsteczek (bo gm nie jest tu wyjątkim), a nie takie pitu pitu gmlowa funkcja to i tamto... Dopiero po wyjasnieniu pewnych spraw mozna zabrac sie za programowanie. To tak jakbys zabral sie za grafike 3D nie majac kompletnie żadnej wiedzy na temat pojęć poligon, vertex, bump mapping, low-poly itd.

Odnośnik do komentarza
Udostępnij na innych stronach

Uff no masz Racje Ranmus bez dokladnej wiedzy nie mam co sie zabierać za kodowanie, a czasu na naukę mam sporo bo urlop mam do 18 Października ;). Jeśli możecie zamieśccie jeszcze na tym kawałku strony troche swojej wiedzy bardzo mi sie przyda każda wasza zapisana linijka. :)

 

Dziekuje za dotychczasowe odpowiedzi i pozdrawiam.

Odnośnik do komentarza
Udostępnij na innych stronach

Eee tam... nawet podstawowymi metodami można uzyskać świetne efekty. Ostatecznie o to właśnie w GM chodzi, że można bardzo łatwo uczyć się "w locie" bez wstępnego studiowania masy dokumentacji. Particle Designer i kilka spojrzeń do helpa powinno każdemu rozgraniętemu człowiekowi wystarczyć do rozkminienia cząsteczek w godzinkę.

Odnośnik do komentarza
Udostępnij na innych stronach

Prosta zasada, najpierw tworzysz w Create jakiegoś obiektu SYSTEM CZĄSTECZEK. Pod zmienną np: pSystem

GML
pSystem=part_system_create();

Potem tworzysz emiter, czyli coś w rodzaju jednostki emitującej (tworzącej) twoje cząsteczki (powiedzmy ze pod zmienną pEmiter)

GML
pSystem=part_system_create();

pEmiter=part_emitter_create( pSystem ); /* w nawiasach podajesz zmienną zawierającą System w ktorym chcesz umiescic emiter */

Jeśli zauważyłeś, funcke związane z particlami zawsze zaczynaja się od "part_" więc teraz należy sobie stworzyć typ cząsteczek jakie będą emitowane. Typ zawiera takierzeczy jak ich wygląd, rozmiar, prędkośc, kierunek, kolor i wiele innych, w helpie masz spis. (zmienna pType)

GML
pSystem=part_system_create();

pEmiter=part_emitter_create( pSystem ); /* w nawiasach podajesz zmienną zawierającą System w ktorym chcesz umiescic emiter */

pType=part_type_create(); // bez argumentów (czyli nic w nawiasie)

Ok to wszystko wystarczy już by emitować jakieś tam cząsteczki. Odbywa się to na tej zasadzie, że emiterowi podajemy typ cząsteczek jaki ma tworzyć. Jednak że puki co nasze cząsteczki będą mieć standardowe atrybuty, trzeba troche określić.

GML
pSystem=part_system_create();

 

pEmiter=part_emitter_create( pSystem ); /* w nawiasach podajesz zmienną zawierającą System w ktorym chcesz umiescic emiter */

 

pType=part_type_create(); // bez argumentów (czyli nic w nawiasie)

// w funkcjach okreslajacych wyglad typu zawsze pierwszym argumentem jest zmienna przechowujaca nasz TYP

part_type_alpha1(pType,1); //alpha to przezroczystosc naszych czasteczek 0-nie widoczne 1-w ogole nie przezroczyste

part_type_life(pType,15,25); /* zycie oznacza to jak dlugo istniec maja poszczegolne particle 2argument to min ilosc 3 to max ilosc, zycie kazdej z czastek jest losowane z tego przedzialu a dlugosc to ilosc stepow(klatek na sekunde) gry.*/

 

part_type_size(pType,0.1,0.2,0,0); /* rozmiar, 2arg to min 3arg to max,4arg to o ile ma sie kazda czastka zwiekszac co stepa a 5arg to czy wielkosc particla ma sie losowo zmniejszac lub zwiekszac o podana ilosc. Pobaw sie tym to pojmiesz xD.*/

 

part_type_shape(pType,pt_shape_spark); /* jest to ksztalt jesli wpiszesz pt_shap to na dole GM sam podpowie ci dostepne ksztalty*/

 

part_type_color1(pType,c_white); // kolor

part_type_speed(pType,0.5,1,0,0); /* szybkosc, znow min, max, zwiekszanie szybkosci i losowe zmnienianie tak samo jak size*/

 

part_type_direction(pType,0,359,0,0); // dziala tak samo jak speed tyle ze dotyczy kierunku ruchu

 

Ostatnia sprawa, określasz w którym miejscu ma znajdować się twój emiter tworzący cząsteczki oraz ile cząsteczek ma być tworzonych na każdego stepa

w STEP dajesz:

GML
part_emitter_region(sys,emit,x1,x2,y1,y2,ps_shape_diamond,ps_distr_gaussian);

/* sys to zmienna z systemem || emit zmienna z emiterem, x'y i y'ki to zmienne ktore

wyznaczają region (kwadrat) rysowany na podstawie punktow zlozonych z x1 i y1 oraz

x2 i y2 (tak jak w paint rysujesz kwadraty i pierwszą pozycja jest to gdzie wcisniesz przycisk

a 2 to gdzie go puścisz.) || ps_shape_diamond to kształt emitera, ciezko to wyjasnic, poprobuj

roznych kształtow by zrozumieć, wszystko masz w helpie || ps_distr_gaussian tego nie potrafie

wytlumaczyc, zajrzyj do helpa, jest to zalezne od tego jaki masz kształt emitera. */

 

part_emitter_burst(sys,emit,typ,2); // funkcja tworząca particle

/* sys to system || emit to emiter || typ to twój typ paticli || ostatni argument to ilosc jaka ma

zostac wytworzona, jesli dasz to do STEP to co stepa beda tworzone 2 nowe particle */

 

Pozycje emittera mozesz tez ustawic jednorazowo w CREATE jesli particle maja sie tworzyc tylko w jednym miejscu przez cały czas.

 

Więcej możesz doczytać się w helpie, uh...

EDIT:

Aha :/ tag GML juz nie dziala...

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