Partikkelityypit

Partikkelityyppi määrittelee tietyntyyppisten partikkelien muodon, värin, liikkeen, jne. Partikkelityyppi tarvitsee määritellä pelissä vain yhden kerran. Tämän jälkeen sitä voidaan käyttää missä tahansa pelin partikkelijärjestelmässä. Partikkelityypillä on suuri määrä parametreja, joita voidaan käyttää kaikkien sen ominaisuuksien muuttamiseen. Asettamalla nämä oikein voit luoda miltei millaisia tahansa efektejä. Seuraavaksi käymme läpi eri asetukset.

On olemassa useita funktioita uusien partikkelityyppien luomiseen ja niiden tuhoamiseen:

part_type_create() Luo uuden partikkelityypin. Funktio palauttaa luodun tyypin indeksin. Tätä indeksiä on käytettävä kaikissa seuraavissa kutsuissa asettaaksesi juuri tietyn partikkelityypin ominaisuudet. Haluat siis yleensä tallettaa sen globaaliin muuttujaan.
part_type_destroy(ind) Tuhoaa partikkelityypin ind. Kutsu tätä, jos et enää tarvitse sitä enää, säästääksesi muistia.
part_type_exists(ind) Palauttaa totuusarvon siitä, onko annettu partikkelityyppi olemassa.
part_type_clear(ind) Palauttaa partikkelityypin ind oletusasetuksiinsa.

Partikkelin muoto

Partikkelilla on muoto. Tämä muoto määritetään kuvana. Voit käyttää mitä tahansa kuvaa partikkeleissasi, mutta on olemassa myös 15 sisäänrakennettua kuvaa. Nämä ovat kaikki kokoa 64x64, ja niiden alpha-arvot on asetettu niin, että ne sulautuvat sopivasti taustaan. Nämä kuvat on määritelty seuraaviin vakioihin:

Muoto asetetaan seuraavan funktion avulla:

part_type_shape(ind,shape) Asettaa partikkelityypin muodon johonkin edellä mainituista vakioista (oletus on pt_shape_pixel).

Voit myös käyttää omaa kuvaasi partikkelin muotona. Jos kuvalla on useampia alikuvia, voit määritellä mitä näiden kanssa tulee tehdä. Voit valita sattumanvaraisen alikuvan, animoida kuvan, aloittaa animaation alusta tai sattumanvaraisesta kohdasta, jne. Tätä varten on olemassa seuraava funktio:

part_type_sprite(ind,sprite,animate,stretch,random) Asettaa oman kuvasi partikkelityyppiin ind. animate määrittelee, tuleeko kuva animoida (1) vai ei (0). stretch (1 tai 0) määrittelee, tuleeko animaatio venyttää partikkelin elinajan pituiseksi. random (1 tai 0) määrittelee, tuleeko aloituskuvaksi valita sattumanvarainen alikuva.

Kun olet valinnut kuvan partikkelityypille (joko oletusmuodon tai itse määrittelemäsi), voit määrittää sen koon. Koon asettaminen arvoksi 1 tarkoittaa kuvan normaalia kokoa. Partikkelityyppi voidaan määrittää niin, että kaikilla partikkeleilla on sama koko tai eri koot. Voit määritellä kokovälin. Voit myös määrittää, tuleeko koon muuttua partikkelin elinajan aikana ja tuleeko koossa tapahtua heiluntaa, joka aiheuttaa vilkkuvan efektin.

part_type_size(ind,size_min,size_max,size_incr,size_wiggle) Asettaa kokoparametrit partikkelityypille ind. Sinun tulee määrittää vähimmäisaloituskoko size_min, enimmäisaloituskoko size_max, koon lisäys size_incr (käytä negatiivista lukua, jotta koko vähenee) ja heilunnan määrä size_wiggle. (Oletuskoko on 1 ja oletuksena koko ei muutu.)
part_type_scale(ind,xscale,yscale) Asettaa vaaka- ja pystysuuntaisen skaalauksen. Tämä kerroin kerrotaan koon kanssa. Tämä on erityisen hyödyllinen, kun haluat skaalata eri tavalla x- ja y-suunnassa.

Partikkeleilla on myös suunta. Suunta voi olla sama kaikilla partikkeleilla, tai sitten se voi olla eri ja se voi vaihdella partikkelin elinajan aikana. Kulmat määrittävät kääntymisen vastapäivään asteina.

part_type_orientation(ind,ang_min,ang_max,ang_incr,ang_wiggle,ang_relative) Asettaa partikkelityypin ind suuntakulman ominaisuudet. Sinun tulee määrittää vähimmäiskulma ang_min, enimmäiskulma ang_max, kulman kasvu joka askeleella ang_incr ja kulman heilunnan määrä ang_wiggle. (Oletuksena kaikki arvot ovat 0.) ang_relative määrittää, tuleeko annetun kulman olla suhteessa (1) senhetkiseen liikkeen suuntaan vai onko se määrätty (0). Esim. asettamalla kaikki parametrien arvoiksi 0, paitsi parametrin ang_relative arvoksi 1, partikkelin suunta seuraa tarkasti partikkelin polkua.

Väri ja sulautuminen

Partikkeleilla on väri. On erilaisia tapoja, joiden avulla voit määrittää partikkelin värit. Yksinkertaisin tapa on määrittää yksittäinen väri. Voit myös määrittää kaksi tai kolme väriä, joiden välillä partikkelin väri muuttuu liukuen partikkelin elinajan aikana. Esimerkiksi, partikkeli voi alkaa valkoisena ja tulla mustemmaksi elinaikansa loppua kohti. Toinen mahdollisuus on, että määrität, että jokaisen partikkelin värin on oltava erilainen, valittuna tietystä välistä varejä. Voit antaa välin joko RGB:nä tai HSV:nä.

Oletuksena väri on valkoinen. Tavallisesti tämä on juuri mitä haluatkin, kun käytät kuvaa omien väriensä kanssa, eikä väriä tarvitse erikseen määritellä.

part_type_color1(ind,color1) Määrittää yksittäisen värin käytettäväksi partikkelityypissä.
part_type_color2(ind,color1,color2) Määrittää kaksi väriä, joiden välillä väri liukuu.
part_type_color3(ind,color1,color2,color3) Sama kuin edellinen, mutta nyt värejä on kolme, jotka ovat värit alussa, puolessavälissä ja lopussa.
part_type_color_mix(ind,color1,color2) Tällä funktiolla määrität, että partikkelin tulee saada väri, joka on sattumanvarainen sekoitus kahta annettua väriä. Tämä väri pysyy partikkelin värinä koko sen elinajan.
part_type_color_rgb(ind,rmin,rmax,gmin,gmax,bmin,bmax) Tämä funktio asettaa jokaiselle partikkelille yksittäisen värin valittuna tietyltä väliltä värejä. Sinun tulee määrittää välin värin punaisen (r), vihreän (g) ja sinisen (b) komponentin arvot (jokainen välillä 0 - 255).
part_type_color_hsv(ind,hmin,hmax,smin,smax,vmin,vmax) Tämä funktio asettaa jokaiselle partikkelille yksittäisen värin valittuna tietyltä väliltä värejä. Sinun tulee määrittää välin värin sävyn (h), kylläisyyden (s) ja kirkkauden (v) komponentin arvot (jokainen välillä 0 - 255).

Värin lisäksi voit antaa myös alphaläpinäkyvyysarvon. Sisäänrakennetuilla partikkelin muodoilla on valmiiksi jo jonkin verran läpinäkyvyyttä, mutta voit käyttää näitä asetuksia esim. saadaksesi partikkelin katoamaan elinaikansa loppua kohti.

part_type_alpha1(ind,alpha1) Asettaa partikkelityypin alphaläpinäkyvyyden (0 - 1).
part_type_alpha2(ind,alpha1,alpha2) Samanlainen kuin edellinen, mutta nyt annetaan alku- ja loppuarvot, joiden välillä läpinäkyvyys muuttuu tasaisesti.
part_type_alpha3(ind,alpha1,alpha2,alpha3) Tässä annetaan kolme arvoa, jotka ovat läpinäkyvyydet alussa, puolessavälissä ja lopussa.

Tavallisesti partikkelit sulautuvat taustaan samalla tavalla kuin kuvat. On kuitenkin mahdollista käyttää myös summaavaa sulautusta. Tämä antaa erityisesti hienon efektin räjähdyksissä.

part_type_blend(ind,additive) Asettaa, käytetäänkö partikkelityypille summaavaa (1) vai tavallista sulautusta (0).

Elämä ja kuolema

Partikkelit elävät rajoitetun ajan, elinaikansa, verran. Tämän jälkeen ne katoavat. Elinaika mitataan askeleissa. Voit määrittää elinajan (tai elinaikojen välin) jokaiselle partikkelityypille. Partikkelit voivat luoda uusia partikkeleita, jotka ovat eri tyyppiä. Tähän on olemassa kaksi tapaa. Ne voivat luoda uusia partikkeleita joka askeleella tai ne voivat luoda partikkeleita kun ne kuolevat. Varo, ettei partikkeleiden kokonaismäärä kasva liian suureksi.

part_type_life(ind,life_min,life_max) Asettaa partikkelityypin elinajan rajat. (Oletuksena molemmat ovat 100.)
part_type_step(ind,step_number,step_type) Asettaa partikkeleiden, joita luodaan joka askeleella, lukumäärän ja tyypin. Jos käytät negatiivista arvoa, partikkeli luodaan joka askeleella todennäköisyydellä -1/luku. Esimerkiksi arvolla -5 partikkeli luodaan siis keskimäärin joka viidennellä askeleella.
part_type_death(ind,death_number,death_type) Asettaa partikkeleiden, jotka luodaan partikkelin kuollessa, lukumäärän ja tyypin. Voit tässäkin käyttää negatiivisia arvoja luodaksesi partikkeleita tietyllä todennäköisyydellä. Huomaa, että nämä partikkelit luodaan vain, kun partikkeli kuolee elämänsä lopussa, ei silloin, kun se kuolee tuhoajan toimesta (ks. myöhemmin).

Partikkelin liike

Partikkelit voivat liikkua elinaikansa aikana. Ne voivat saada alkunopeuden (tai tietyn välin nopeuksia) ja suunnan, ja nopeus ja suunta voivat muuttua ajan myötä. On myös mahdollista asettaa painovoima, joka vetää partikkeleita tiettyyn suuntaan. Seuraavat funktiot ovat olemassa tätä varten:

part_type_speed(ind,speed_min,speed_max,speed_incr,speed_wiggle) Asettaa nopeusominaisuudet partikkelityypille. (Oletuksena kaikki arvot ovat 0.) Sinun tulee määrittää vähimmäisnopeus speed_min ja enimmäisnopeus speed_max. Näiden kahden väliltä valitaan sattumanvarainen arvo, kun partikkeli luodaan. Voit määrittää nopeuden lisäyksen speed_incr jokaista askelta kohden. Käytä negatiivista arvoa hidastaaksesi partikkelin liikettä (nopeus ei koskaan pienene nollan alapuolelle). speed_wiggle määrittää heilunnan määrän nopeudessa.
part_type_direction(ind,dir_min,dir_max,dir_incr,dir_wiggle) Asettaa partikkelityypin suuntaominaisuudet. (Oletuksena kaikki arvot ovat 0.) Sinun tulee määrittää suunnan reuna-arvot dir_min ja dir_max (vastapäivään asteina; 0 merkitsee suuntaa oikealle). Esimerkiksi asettaaksesi partikkelin liikkumaan sattumanvaraiseen suuntaan, aseta arvoiksi 0 ja 360. dir_incr määrittää suunnan lisäyksen joka askeleella ja dir_wiggle heilunnan.
part_type_gravity(ind,grav_amount,grav_dir) Asettaa partikkelityypin painovoimaominaisuudet. (Oletuksena painovoimaa ei ole.) grav_amount määrittää painovoiman lisäyksen askeleella ja grav_dir painovoiman suunnan. Käytä esimerkiksi arvoa 270 asettaaksesi suunnan alaspäin.