« 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 »