« Előző oldal- - - ^Tartalom^- - - Következő oldal »



RÉSZECSKÉK KÉSZÍTÉSE:

A részecskerendszerek különleges hatások készítését jelentik. A részecskék kis elemek (pl. egy kis kép, vagy képpont testesítheti meg őket). Némelyek előre megadott utasítások szerint mozognak, miközben színt tudnak váltani. Sok részecske együtt tud létrehozni pl. tüzijátékot, lángokat, esőt, havazást, csillagos mezőt, szétrepülő roncsokat, stb.
A GM terjedelmes részecskerendszert tartalmaz, mellyel nagyszerű hatások érhetők el.
A részecskerendszerek sok paramétert tartalmaznak, és gyakran nem könnyű megérteni, hogyan hozhatjuk létre a kívánt hatást.

Először is vannak részecsketípusok, melyek a részecskék milyenségét határozzák meg. Némely típus sok paraméterrel rendelkezik, melyek a részecskék alakját, méretét, színét és mozgását írják le.
Továbbá vannak részecskerendszerek, melyek részecskék különböző típusaiból állhatnak. Egy részecskerendszernek vannak úgynevezett kibocsátói, melyek a részecskéket hozzák létre, folyamatosan vagy kirobbanásszerűen. Lehetnek még vonzói, melyek vonzzák, és végül megsemmisítői, melyek megsemmisítik a részecskéket.
Amint részecskék jönnek létre egy részecskerendszerben, ezek önműködően kezelődnek (frissülnek és kirajzolódnak) a rendszer által.

Egyszerű hatások:

A legkönnyebb módja a részecskék készítésének a hatásmechanizmus használata. A hatások létrejönnek a részecskerendszer használatával, de nem kell aggódni minden apró részlet miatt. Egyszerűen megadható a hatás típusa, a hely ahol létre kell jönnie, a mérete és a színe. Ennyi az egész.
Számos különböző hatásfajta van:
- ef_explosion
- ef_ring
- ef_ellipse
- ef_firework
- ef_smoke
- ef_smokeup
- ef_star
- ef_spark
- ef_flare
- ef_cloud
- ef_rain
- ef_snow
Némelyiket csak egyszer akarjuk létrehozni (mint pl. robbanás), némelyiket pedig minden lépésben (mint pl. füst vagy eső). Jegyezzük meg, hogy az eső és a hó mindig a pálya tetején jön létre, ezért ebben az esetben a helyzet lényegtelen.
Még akkor is, ha ez a lehetőség korlátozott, valójában nagyszerű hatások előállítására használható. Pl. vörös füst előidézésével egy mozgó űrhajó alatt, egy tűzfarok jön létre. A következő két függvény létezik hatások létrehozására:
effect_create_below(jelleg,x,y,meret,szin) - egy hatás létrehozása az adott jelleggel (lásd fentebb), a megadott helyre. A meret adja a méretet a következőképpen: 0 = kicsi, 1 = közepes, 2 = nagy. A szin jelzi a használt színt. A hatás a példányok alatt jön létre, vagyis 100000 mélységen.
effect_create_above(jelleg,x,y,meret,szin) - hasonló az előző függvényhez, de ezúttal a példányok tetején jön létre, vagyis -100000 mélységen.
Az összes hatás megszüntetésére a következő függvény való: effect_clear()

Részecsketípusok:

Egy részecsketípus jellemzi az alakot, színt, mozgást, stb. egy egyéni részecskefajtánál. A részecsketípust csak egyszer kell meghatározni a játékban, ezután felhasználható bármely részecskerendszerben a játékban. A részecskerendszereknek nagyszámú paramétereik vannak, amelyek összes jellegzetességük megváltoztatására használhatók. Ezek helyes beállításával majdnem mindenféle hatás létrehozható.
Számos rutin áll rendelkezésre új részecsketípusok létrehozására és megsemmisítésére:
part_type_create() - egy új részecsketípus létrehozása. Visszaadja a típus indexét, amelyet az alábbi függvényeknél kell felhasználni a részecsketípus tulajdonságainak beállítására. Ez tehát gyakran egy globális változóban tárolódik.
part_type_destroy(ind) - az ind típusú részecske megsemmisítése. Akkor kell hívni, ha már nincs rá szükség, hogy helyet takarítsunk meg.
part_type_exists(ind) - visszatér, hogy vajon a jelölt részecsketípus létezik-e.
part_type_clear(ind) - az alapértelmezett értékeire állítja az ind részecsketípust.

Egy részecske alakja:

Egy részecskének van egy alakja, amely egy sprite által van mutatva. Bármilyen sprite használható, de van 15 beépített is. Ezek 64x64 méretűek és van alfa értékük. A következő állandókkal vannak jelölve:
- pt_shape_pixel
- pt_shape_disk
- pt_shape_square
- pt_shape_line
- pt_shape_star
- pt_shape_circle
- pt_shape_ring
- pt_shape_sphere
- pt_shape_flare
- pt_shape_spark
- pt_shape_explosion
- pt_shape_cloud
- pt_shape_smoke
- pt_shape_snow
A következő függvénnyel állítható az alak: part_type_shape(ind,alak) - a részecsketípus alakjának beállítása az előbbi állandók valamelyikére (alapértelmezett a pt_shape_pixel).
Ezenkívül saját sprite is használható a részecskének. Ha a sprite-nak több alképe van, beállítható, hogy melyik kell. Kiválasztható egy véletlenszerű, animálható, indítható az animáció elejétől vagy egy véletlen helyzetből, stb. A következő függvény használható erre:
part_type_sprite(ind,sprite,animal,kiterj,veletlen) - saját sprite beállítása a részecsketípushoz. Az animal-lal jelezhető, hogy a kép animált (1) vagy nem (0). A kiterj-jel (1 vagy 0) jelezhető, hogy az animáció a részecske egész élettartamára kiterjed-e. Végül a veletlen-nel jelezhető, hogy egy véletlen alkép választódjon ki kezdőképnek.

Amint kiválasztottuk a sprite-ot a részecsketípushoz (vagy egy alapértelmezett alakot vagy sajátot), megadható a mérete. Az 1 jelzi a normál méretét a képnek. Egy részecsketípus meghatározható olymódon, hogy az összes részecske azonos vagy különböző méretű legyen, tehát megadhatók a mérettartományok. Ezenkívül az is, hogy a méret változzon a részecske élettartama alatt és hogy némi mozgás történjen a méretben, adva egy villogó hatást.
part_type_size(ind,minmeret,maxmeret,novekedes,mozgas) - a részecsketípus méretparamétereinek beállítása. Megadható a legkisebb és legnagyobb kezdőméret, a növekedési méret minden lépésben (negatív számmal érhető el a csökkenés a méretben) és a mozgás mennyisége. (Az alapértelmezett méret az 1 és alapértelmezésben a méret nem változik.)
part_type_scale(ind,xskala,yskala) - a vízszintes és függőleges skálázás beállítása. Ez a tényező szorzódik a mérettel. Ez hasznos, ha különbözően kell méretezni x és y irányba.

A részecskéknek tájolása is van. Az orientáció lehet azonos minden részecskénél, lehet különböző és változhat a sprite élettartama alatt. A szögek az óramutató járásával ellentétesek, és fokokban meghatározottak.
part_type_orientation(ind,lkszog,lnszog,novek,mozgas,relativszog) - a tájolásiszög tulajdonság beállítása a részecsketípusnak. Meghatározható a legkisebb és legnagyobb szög, a növekedés minden lépésben és a mozgás mennyisége szögben. (Alapértelmezésben az összes érték 0.) Megadható az is, hogy az adott szög relatív (1) a pillanatnyi mozgási irányhoz vagy abszolút (0). Pl. az összes érték 0-ra állítása de a relativszogé 1-re okozza, hogy a részecskeorientáció követi a részecske nyomvonalát.

Szín és keverés:

A részecskéknek lesz egy színe, melyet különböző módon adhatunk meg. A legegyszerűbb megadni egy egyszerű színt. Megadható két vagy három szín is, amelyek között a részecske színe közbeszúródik az élettartama alatt. Például a részecske indulhat fehérrel és egyre feketébbé válik az élettartama alatt. Másik lehetőség megadni, hogy minden részecske színe eltérő, kiválasztva egy színtartományból. Megadható tartomány vörösben, zöldben és kékben, vagy színárnyalatban, telítettségben és értékben.
Alapértelmezésben a szín a fehér. Amikor egy sprite-ot használunk a saját színeivel, ez az, amit rendszerint akarunk és nem szükséges színt megadni.
part_type_color1(ind,szin1) - egy szín megadása a részecske számára.
part_type_color2(ind,szin1,szin2) - két szín megadása, mely közé a szín beszúródik.
part_type_color3(ind,szin1,szin2,szin3) - hasonló az előzőhöz, de most a szín három szín közé szúródik be, melyek képviselik a színt a kezdetnél, félútnál és a végénél.
part_type_color_mix(ind,szin1,szin2) - ezzel a függvénnyel megadható a részecskének a színe, mint a két adott szín véletlen keveréke. Ez a szín változatlanul megmarad a részecske élettartama alatt.
part_type_color_rgb(ind,vmin,vmax,zmin,zmax,kmin,kmax) - annak jelzésére használható, hogy minden részecske állandó színű kell, hogy legyen, de egy értéktartományból választva a színt. Megadható a vörös, zöld és kék színösszetevő értéke (mindegyik 0 és 255 közötti).
part_type_color_hsv(ind,szfmin,szfmax,telmin,telmax,ertmin,ertmax) - annak jelzésére használható, hogy minden részecske állandó színű kell, hogy legyen, de egy értéktartományból választva a színt. Megadható a színfokozat, a telítettség és az érték (mindegyik 0 és 255 közötti).

A színen kívül megadható egy alfa áttetszőségi érték. A beépített részecskealakoknak már van némi alfa áttetszőségük, de ezzel beállítható pl. hogy a részecske eltűnjön az élettartama alatt.
part_type_alpha1(ind,alfa1) - egy egyszerű alfa áttetszőségi paraméter (0-1) beállítása a részecsketípusnak.
part_type_alpha2(ind,alfa1,alfa2) - hasonló az előzőhöz, de most egy kezdeti és egy végérték van megadva, és az alfaérték közbeszúródik.
part_type_alpha3(ind,alfa1,alfa2,alfa3) - most három érték van megadva, melyek közé az alfa áttetszőség közbeszúródik.

A részecskék rendszerint elkeverednek a háttérrel ugyanúgy, mint a sprite-ok. De itt lehetőség van járulékos keverést használni. Ez nagyszerű hatást adhat különösen robbanás számára.
part_type_blend(ind,jarulek) - annak beállítása, hogy járulékos keverés (1) vagy normál keverés (0) használatos a részecsketípusnak.

Élet és halál:

A részecskék élete egy korlátozott időmennyiség, az élettartamuk. Ezután eltűnnek. Az élettartam mérése lépésekben történik. Az élettartam (vagy élettartamok tartománya) beállítható minden részecsketípusnak. A részecskék különféle típusok új részecskéit tudják létrehozni. Két módja van ennek. Tudnak új részecskéket létrehozni minden lépésben és amikor megsemmisülnek. Óvatosnak kell lenni, hogy a részecskék teljes száma ne legyen túl nagy.
part_type_life(ind,min_elet,max_elet) - az élettartam korlátok beállítása a részecsketípusnak. (Alapértéke mindkettőnek 100.)
part_type_step(ind,szam,tipus) - azon részecskék számának és típusának beállítása, amelyeket létre kell hoznia minden lépésben a jelzett részecsketípusnak. Negatív érték használatakor minden lépésben egy részecske jön létre -1/szam eséllyel. Tehát pl. -5 értékkel egy részecske jön létre átlagosan egyszer minden 5 lépésben.
part_type_death(ind,szam,tipus) - azon részecskék számának és típusának beállítása, amiket létre kell hozni, mikor a jelölt típus egy részecskéje megsemmisül. Itt is lehet negatív számot használni, hogy létrejöjjön egy részecske bizonyos eséllyel. Jegyezzük meg, hogy ezek a részecskék csak akkor jönnek létre, mikor a részecske megsemmisül az élete végén, nem pedig egy megsemmisítő miatt (lásd lentebb).

Részecske mozgás:

A részecskék tudnak mozogni élettartamuk alatt. Kaphatnak egy kezdeti sebességet (vagy sebességek tartományát) és irányt, de gravitáció is megadható, ami vonzza a részecskéket egy bizonyos irányba. A következő függvények léteznek erre:
part_type_speed(ind,min_seb,max_seb,nov_seb,mozg_seb) - a sebességtulajdonságok beállítása a részecsketípusnak. (Alapértelmezésben minden érték 0.) Megadható a minimális és maximális sebesség. Az adott határok közötti véletlenérték választódik ki, mikor a részecske létrejön. Beállítható a sebesség növelése minden lépésben. Negatív szám használatával a részecske lelassul (a sebesség soha nem lesz kisebb, mint 0). Végül megadható némi mozgásmennyisége a sebességnek.
part_type_direction(ind,ir_min,ir_max,ir_nov,ir_mozg) - az iránytulajdonságok beállítása a részecsketípusnak. (Alapértelmezésben minden érték 0.) Megadható irány értéktartomány (óramutató járásával ellentétes irányban fokokban; 0 jelenti a jobbra mozgást). Pl. a részecske véletlen irányban történő elmozdulásához válasszunk 0-t és 360-at értékként. Megadható egy növekedés minden lépésben és mozgásmennyiség.
part_type_gravity(ind,grav_mennyiseg,grav_ir) - a gravitációtulajdonságok beállítása a részecsketípusnak. (Alapértelmezésben nincs gravitáció.) Megadható a tömegvonzás mennyisége és az irány. Pl. 270 jelenti a lefelé irányt.

Részecskerendszerek:

A részecskék részecskerendszerekben léteznek. Tehát ha részecskéket akarunk használni a játékunkban, akkor létre kell hozni egy vagy több részecskerendszert. Ezekből különböző van (de jobb a számukat alacsonyan tartani). Például ha a játékban számos labda van és mindegyik labdának kellene egy részecskefarka, valószínűleg minden labdának kell saját részecskerendszer. A legegyszerűbb módja a részecskerendszerekkel való foglalkozásnak csinálni egyet és aztán csinálni részecskéket abban, használni az előbbiekben részletezett részecsketípusokat. De, ahogy azt a következőkben látni fogjuk, a részecskerendszerek tartalmazhatnak kibocsátókát, melyek önműködően hoznak létre részecskéket, vonzókat, amelyek vonzzák, és megsemmisítőket, amelyek megsemmisítik őket.
Mikor egy részecske hozzáadódik egy részecskerendszerhez, ezek önműködően frissülnek minden lépésben, és kirajzolódnak. Nem szükségesek további akciók. Annak lehetővé tételéhez, hogy a részecskék kirajzolódjanak az objektumpéldányok alatt, előtt vagy között, minden részecskerendszernek van egy mélysége, hasonlóan a példányokhoz és csempékhez.
A részecskerendszerek örökké fognak létezni, miután létrejöttek. Tehát még akkor is, ha megváltozik a pálya vagy újraindul a játék. Tehát a legjobb megbizonyosodni a megsemmisülésükről, miután nincs már rájuk szükség.
A következő alapfüggvények foglalkoznak a részecskerendszerekkel:
part_system_create() - egy új részecskerendszer létrehozása. Visszatér a rendszer indexével, amelyet fel kell használni az összes alábbi függvények hívásakor a részecskerendszer tulajdonságainak beállításához.
part_system_destroy(ind) - az ind indexű részecskerendszer megsemmisítése. Ezt kell hívni, ha többé már nincs rá szükség, hogy helyet takarítsunk meg.
part_system_exists(ind) - visszatér, hogy a jelölt részecskerendszer létezik-e.
part_system_clear(ind) - az ind részecskerendszert az alapértelmezett értékekre állítja, eltávolítva az összes részecskét, kibocsátót és vonzót benne.
part_system_draw_order(ind,regitelsonek) - a sorrend beállítása, melyben a részecskerendszer kirajzolja a részecskéket. Mikor a regitelsonek igaz, a legrégebbi részecskék rajzolódnak először, és az újabbak lesznek a tetejükön (alapértelmezett), különben a legújabb részecskék rajzolódnak először.
part_system_depth(ind,melyseg) - a részecskerendszer mélységének beállítása. Ez használható arra, hogy a részecskék a példányok mögött, előtt vagy között tűnjenek fel.
part_system_position(ind,x,y) - a hely meghatározása, ahol a részecskerendszer kirajzolódik. Ez rendszerint nem szükséges, de ha egy objektum mozgásához viszonyítva akarjuk a részecskéket, beállíthatjuk a helyet pl. ahhoz a tárgyhoz.

Ahogy a fentiekben rámutattunk, a részecskerendszer önműködően frissül és rajzolódik. De néha nem ezt akarjuk. Ennek megkönnyítésére kikapcsolható az önműködő frissítés vagy rajzolás, és magunk dönthetünk ezek megtörténéséről. Erre a következő függvényekeet használhatjuk:
part_system_automatic_update(ind,onmukodo) - annak beállítása, hogy a részecskerendszernek frissülni kell önműködően (1) vagy nem (0). Alapértelmezett az 1.
part_system_automatic_draw(ind,onmukodo) - annak beállítása, hogy a részecskerendszernek rajzolódni kell önműködően (1) vagy nem (0). Alapértelmezett az 1.
part_system_update(ind) - ez a függvény frissíti minden részecske helyzetét a rendszerben és lehetővé teszi a kibocsátóknak részecskék létrehozását. Csak akkor kell hívni, ha a frissítés nem önműködő.
part_system_drawit(ind) - ez a függvény kirajzolja a részecskéket a rendszerben. Csak akkor kell hívni, ha a rajzolás nem önműködő, és valamely objektum rajzolás eseményében.

A következő függvények foglalkoznak részecskékkel egy részecskerendszerben:
part_particles_create(ind,x,y,rtipus,szam) - ez a függvény hoz létre szam darab részecskét a jelölt típusból x,y, helyre a rendszerben.
part_particles_create_color(ind,x,y,rtipus,szin,szam) - ez a függvény hoz létre szam darab részecskét a jelölt típusból x,y, helyre a rendszerben a jelölt színnel. Ez csak akkor hasznos, mikor a részecsketípus meghatároz egy egyszerű színt (vagy egyáltalán nem határoz meg).
part_particles_clear(ind) - ez a függvény eltávolítja az összes részecskét a rendszerben.
part_particles_count(ind) - ez a függvény adja a részecskék számát a rendszerben.

Kibocsátók:

A kibocsátók hoznak létre részecskéket. Létrehozhatják folyamatos áradatát a részecskéknek, vagy számos részecske kirobbanását, a megfelelő függvény használatával. Egy részecskerendszernek tetszőleges számú kibocsátói lehetnek. Egy kibocsátónak a következő tulajdonságai lehetnek:
- xmin, xmax, ymin, ymax - a terület kiterjedésének jelzése, melyben a részecskék létrejönnek.
- alak - a terület alakjának jelzése. A következő értékei lehetnek:
- ps_shape_rectangle
- ps_shape_ellipse
- ps_shape_diamond
- ps_shape_line

- eloszlas - a részecskék létrehozáshoz használt eloszlás jelzése. A következő értékei lehetnek:
- ps_distr_linear - vonalas eloszlás jelzése, vagyis a területen mindenhol egyenlő a valószínűsége.
- ps_distr_gaussian - a Gausszián eloszlás jelzése, vagyis több részecske jön létre a központban, mint a terület szélein.
- ps_distr_invgaussian - fordított Gausszián eloszlás, melyben több részecske jön létre a széleken, mint a középpontban.

- reszecsketipus - a létrehozandó részecskék típusának jelzése.
- szam - a minden lépésben létrehozandó részecskék száma. Ha kisebb, mint 0, akkor minden lépésben egy részecske jön létre -1/szám eséllyel. Tehát pl. a -5 értékkel egy részecske jön létre átlagosan egyszer minden 5 lépésben.

A következő függvények állnak rendelkezésre kibocsátók beállításra és részecskék előállítására:
part_emitter_create(rr) - egy új kibocsátót hoz létre az adott részecskerendszerben. Visszatér a kibocsátó indexével, amelyet az összes alábbi függvényhívásnál kell használni a kibocsátó tulajdonságainak beállításánál.
part_emitter_destroy(rr,ind) - az ind indexű kibocsátó megsemmisítése az adott részecskerendszerben. Ezt kell hívni, amikor nincs már rá szükség, hogy helyet takarítsunk meg.
part_emitter_destroy_all(rr) - az összes kibocsátó megsemmisítése a részecskerendszerben, ami létrejött.
part_emitter_exists(rr,ind) - visszatér, hogy a jelölt kibocsátó létezik-e a részecskerendszerben.
part_emitter_clear(rr,ind) - az ind kibocsátót az alapértelmezett értékeire állítja.
part_emitter_region(rr,ind,xmin,xmax,ymin,ymax,alak,eloszlas) - a terület és eloszlás beállítása a kibocsátó számára.
part_emitter_burst(rr,ind,resztipus,szam) - kirobbant egyszer szam darab megadott típusú részecskét a kibocsátóból.
part_emitter_stream(rr,ind,resztipus,szam) - szam-nyi jelölt típusú részecske minden lépésben. 0-nál kisebb szám esetén minden lépésben létrejön egy részecske -1/szam eséllyel. Tehát pl. -5 esetén egy részecske jön létre egyszer átlagosan minden 5 lépésben.

Vonzók:

A kibocsátókon kívül egy részecskerendszer tartalmazhat vonzókat is, amelyek vonzzák a részecskéket (vagy éppen eltaszítják őket). Egy részecskerendszernek több vonzója is lehet. Mégis ajánlott csak néhányat használni, mert lelassítják a részecskék feldolgozását. Egy vonzónak a következő tulajdonságai lehetnek:
- x,y - a vonzó helyzetének jelölése.
- ero - a vonzó vonzóerejének jelölése. Hogy ez az erő hogyan hat a részecskékre, az függ a következő paraméterektől.
- tav - a legnagyobb távolság jelölése, amelynél a vonzónak még hatása van. Csak az ehhez közeli részecskéket vonzza a vonzó.
- jelleg - a vonzó jellege. A következő értékei lehetnek:
- ps_force_constant - annak jelölése, hogy az erő állandóan független a távolságtól.
- ps_force_linear - lineárisan növekvő erő jelölése. A legnagyobb távolságnál az erő 0, míg a vonzó helyzeténél eléri az adott értéket.
- ps_force_quadratic - kvadratikusan növekvő erő jelölése.
- additiv - annak jelölése, hogy az erőnek hozzá kell-e adódnia a sebességhez és az irányhoz minden lépésben (true) vagy csak a részecske helyzetéhez kell alkalmazkodnia (false). Amikor additív, a részecske gyorsul a vonzó irányába, míg nem-additív erőnél állandó sebességgel mozog.

A következő függvények léteznek vonzók meghatározására. Első argumentumként mindegyikük a részecskerendszer indexét kapja.
part_attractor_create(rr) - egy új vonzó létrehozása az adott részecskerendszerben. Visszatér a vonzó indexével, amelyet az összes alábbi függvény hívásakor kell használni a vonzó tulajdonságainak beállításakor.
part_attractor_destroy(rr,ind) - az ind jelű vonzó megsemmisítése a részecskerendszerben. Ezt kell hívni, ha már nincs rá szükség, hogy helyet takarítsunk meg.
part_attractor_destroy_all(rr) - az összes létrejött vonzó megsemmisítése a részecskerendszerben.
part_attractor_exists(rr,ind) - visszatér, hogy a jelölt vonzó létezik-e a részecskerendszerben.
part_attractor_clear(rr,ind) - az ind vonzót az alapértelmezésre állítja.
part_attractor_position(rr,ind,x,y) - a vonzó helyzetét az (x,y)-ra állítja.
part_attractor_force(rr,ind,ero,tav,jelleg,additiv) - az ind vonzó erőparamétereinek beállítása.

Megsemmisítők:

A megsemmisítők megsemmisítik a területükön feltűnő részecskéket. Egy részecskerendszernek tetszőleges számú megsemmisítői lehetnek. Egy megsemmisítőnek a következő tulajdonságai vannak:
- xmin, xmax, ymin, ymax - a terület kiterjedése, melyben a részecskék megsemmisülnek.
- alak - a terület alakja. A következő értékei lehetnek:
- ps_shape_rectangle
- ps_shape_ellipse
- ps_shape_diamond


A következő függvények vannak a megsemmisítők tulajdonságainak beállítására. Első argumentumként mindegyikük a részecskerendszer indexét kapja.
part_destroyer_create(rr) - egy új megsemmisítő létrehozása az adott részecskerendszerben. Visszatér a megsemmisítő indexével, amelyet az összes alábbi függvény hívásakor kell használni a megsemmisítő tulajdonságainak beállításakor.
part_destroyer_destroy(rr,ind) - az ind megsemmisítő megsemmisítése a részecskerendszerben. Ezt kell hívni, ha már nincs rá szükség, hogy helyet takarítsunk meg.
part_destroyer_destroy_all(rr) - az összes létrejött megsemmisítő megsemmisítése a részecskerendszerben.
part_destroyer_exists(rr,ind) - visszatér, hogy a jelölt megsemmisítő létezik-e a részecskerendszerben.
part_destroyer_clear(rr,ind) - az ind megsemmisítőt az alapértékeire állítja.
part_destroyer_region(rr,ind,xmin,xmax,ymin,ymax,alak) - a terület beállítása a megsemmisítő számára.

Elterelők:

Az elterelők elterelik a részecskéket, amikor azok felbukkannak a területükön. Tudni kell, hogy csak a részecske helyzete vevődik számításba, nem a sprite-ja vagy mérete. Egy részecskerendszer tetszőleges számú elterelőt tartalmazhat. Egy elterelőnek a következő tulajdonságai lehetnek:
- xmin, xmax, ymin, ymax - a terület kiterjedése, melyben a részecskék elterelődnek.
- jelleg - az elterelő jellege. A következő értékei lehetnek: - ps_deflect_horizontal - a részecske vízszintes elterelése; főleg függőleges falaknál használt.
- ps_deflect_vertical - a részecske függőleges elterelése; főleg vízszintes falaknál használt.
- surlodas - a súrlódás mennyisége az elterelővel való ütközés következtében. Nagyobb érték esetén a részecske lelassul ütközéskor.

A következő függvények léteznek az elterelő tulajdonságainak beálítására. Első argumentumként mindegyikük a részecskerendszer indexét kapja.
part_deflector_create(rr) - egy új elterelő létrehozása az adott részecskerendszerben. Visszatér az elterelő indexével, amelyet az összes alábbi függvény hívásakor kell használni az elterelő tulajdonságainak beállításakor.
part_deflector_destroy(rr,ind) - az ind elterelő megsemmisítése a részecskerendszerben. Ezt kell hívni, ha már nincs rá szükség, hogy helyet takarítsunk meg.
part_deflector_destroy_all(rr) - az összes létrejött elterelő megsemmisítése a részecskerendszerben.
part_deflector_exists(rr,ind) - visszatér, hogy a jelölt elterelő létezik-e a részecskerendszerben.
part_deflector_clear(rr,ind) - az ind elterelőt az alapértékeire állítja.
part_deflector_region(rr,ind,xmin,xmax,ymin,ymax) - az elterelő területének beállítása.
part_deflector_kind(rr,ind,jelleg) - az elterelő jellegének beállítása.
part_deflector_friction(rr,ind,surlodas) - a súrlódás beállítása az elterelő számára.

Változtatók:

A változtatók megváltoztatnak bizonyos részecskéket, mikor azok elérik a területüket. Egy részecskerendszer tetszőleges számú változtatót tartalmazhat.
Egy változtatónak a következő tulajdonságai lehetnek:

xmin, xmax, ymin, ymax - azon terület kiterjedése, melyen a részecskék megváltoznak.
alak - a terület alakja. A következő értékek használhatók:
- ps_shape_rectangle (téglalap)
- ps_shape_ellipse (ellipszis)
- ps_shape_diamond (rombusz)
rtipus1 - a részecsketípus, amelyet meg kell változtatni.
rtipus2 - a részecsketípus, amellyé átváltozik.
jelleg - a változtató jellege. A következő értékek használhatók:
- ps_change_motion (csak a részecske mozgási paramétere változik, a színe, alakja, élettartama nem)
- ps_change_shape (csak a részecske alakja változik)
- ps_change_all (minden paraméter megváltoztatása. Ez alapvetően azt jelenti, hogy a részecske megsemmisül, és az új típus új példánya jön létre)

A következő függvények a változtatók tulajdonságainak beállítására használhatók. Mindegyiknél az első argumentum a részecskerendszer indexe.

part_changer_create(rr) - egy új változtató létrehozása az rr részecskerendszerben. A függvény a típus indexét adja, melyet az alábbi, a változtató tulajdonságait beállító függvények hívásakor kell használni.
part_changer_destroy(rr,ind) - az ind jelű változtató megsemmisítése.
part_changer_destroy_all(rr) - minden létrehozott változtató megsemmisítése.
part_changer_exists(rr,ind) - létezik-e az ind jelű változtató.
part_changer_clear(rr,ind) - az ind jelű változtatót az alapértelmezett értékeire állítja.
part_changer_region(rr,ind,xmin,xmax,ymin,ymax,alak) - a változtató területe.
part_changer_types(rr,ind,rtipus1,rtipus2) - melyik részecsketípust kell átváltoztatni a másik típusba.
part_changer_kind(rr,ind,jelleg) - a változtató jellege.

Tűzijáték példa:

Itt egy példa egy részecskerendszerről, ami tűzijátékot hoz létre. A tűzijáték két részecsketípust használ: egyet a rakéta kialakításához és egyet a jelenlegi tűzijátékhoz. A rakéta állítja elő a tűzijáték részecskét a megsemmisülésekor. Előállítunk egy kibocsátót is a részecskerendszerben, amely szabályos folyamban bocsát ki rakétarészecskéket a képernyő aljának mentén. Ehhez szükség van egy objektumra. Ennek létrehozás eseményében helyezzük el a következő kódot, ami létrehozza a részecsketípusokat, a részecskerendszert és a kibocsátót:
{
// a részecskerendszer létrehozása
ps = part_system_create();

// a tűzijáték részecskék
pt1 = part_type_create();
part_type_shape(pt1,pt_shape_flare);
part_type_size(pt1,0.1,0.2,0,0);
part_type_speed(pt1,0.5,4,0,0);
part_type_direction(pt1,0,360,0,0);
part_type_color1(pt1,c_red);
part_type_alpha2(pt1,1,0.4);
part_type_life(pt1,20,30);
part_type_gravity(pt1,0.2,270);

// a rakéta
pt2 = part_type_create();
part_type_shape(pt2,pt_shape_sphere);
part_type_size(pt2,0.2,0.2,0,0);
part_type_speed(pt2,10,14,0,0);
part_type_direction(pt2,80,100,0,0);
part_type_color2(pt2,c_white,c_gray);
part_type_life(pt2,30,60);
part_type_gravity(pt2,0.2,270);
part_type_death(pt2,150,pt1); // tűzijáték létrehozása a megsemmisüléskor

// a kibocsátó létrehozása
em = part_emitter_create(ps);
part_emitter_region(ps,em,100,540,480,490,ps_shape_rectangle,ps_distr_linear);
part_emitter_stream(ps,em,pt2,-4); // csinálni egyet minden 4 lépésben
}

Ez csinálja a trükköt. Esetleg akarhatjuk még, hogy megbizonyosodjunk arról, hogy a részecskerendszer (és talán a részecsketípusok) megsemmisüljenek egy másik pályára való lépéskor, különben a tűzijáték örökké folytatódik.

« Előző oldal- - - ^Tartalom^- - - Következő oldal »