« Előző oldal- - - ^Tartalom^- - - Következő oldal »
A JÁTÉKBAN SZEREPLŐ TÁRGYAK:
A játék alapegységei a benne szereplő tárgyak, melyeknek
több példányai (instance) is lehetnek.
object_index - objektum jelzése. Értéke nem
változtatható meg.
id - a példány egyéni azonosítószáma
(>= 100000). (Az egérmutató alatt mindig látható a pálya
szerkesztésekor.) Értéke nem változtatható meg.
mask_index - ütközésekkor maszkként
használt kép jelzése. A -1 érték adásakor ugyanaz lesz,
mintha a sprite_index lenne.
solid - szilárd-e a példány. A játék alatt
megváltoztatható.
persistent - amikor egy példány ismétlődő
és újra feltűnik, mikor egy másik pályára kerül. (Pl. egy
vezérlőobjektumnál lehet szükséges, hogy ne semmisüljön
meg, hanem változatlanul maradjon meg a következő pályán
is.) Például olyankor szokás kikapcsolni (hamisra állítani),
ha visszamegyünk az első pályára.
Az egyéni példányokat nem olyan könnyű azonosítani, mert
nincs nevük. Ha egy tárgynak csak egy példánya van, akkor
használható a tárgy neve, de egyébként meg kell adni a
példány id-jét, vagyis egyéni azonosítóját. Ez
használható a with utasításban és mint tárgy
azonosító. Szerencsére számos változó és függvény nyújt
segítséget a példány egyéni azonosítójának
megállapítására.
A következő két függvény egyikének sem változtatható meg
az értéke (vagyis csak lekérdezhető):
instance_count - az aktuális pályán létező
tárgyak száma.
instance_id[0..n-1] - külön tárgyak
azonosítója. Itt n a tárgyak száma.
Példaként tételezzük fel, hogy a játékban minden egységnek
egyéni erőssége van és meg akarjuk találni a legerősebbet:
maxazonosito = -1;
maxero = 0;
for (i=0; i<instance_count; i+=1)
{
iii = instance_id[i];
if (iii.object_index = = unit)
{
if (iii.ero > maxero)
{maxazonosito = iii; maxero = iii.ero;}
}
}
A ciklus végeztével a maxero változó tartalmazza a
legerősebb egység azonosítóját. (Ne semmisüljenek meg
példányok a ciklus közben, mert azok automatikusan
eltávolítódnak a tömbből, és ennek következtében
példányok kihagyásával fog kezdeni.)
instance_find(obj,n) - az obj
objektumtípus (n+1)-edik tagjának azonosítóját adja.
Ha a megadott objektum nem létezik, a visszatérő érték a noone
kulcsszó lesz.
instance_exists(obj) - létezik-e az obj
objektumtípus tagja. Obj lehet egy tárgy,
példány id, vagy az all kulcsszó.
instance_number(obj) - mennyi létezik az obj
objektumtípusból. Obj lehet egy tárgy,
példány id, vagy az all kulcsszó.
instance_position(x,y,obj) - az (x,y)
helyen lévő obj típusú objektum
azonosítóját adja. Ha több tárgy van azon a helyen, csak az
elsőt adja. Obj lehet egy tárgy vagy az all
kulcsszó. Ha nincs, a visszatérő érték a noone.
instance_nearest(x,y,obj) - (x,y)
ponthoz legközelebbi obj típusú objektum
azonosítója. Obj lehet egy tárgy vagy az all
kulcsszó.
instance_furthest(x,y,obj) - (x,y)
ponttól legtávolabbi obj típusú objektum
azonosítója. Obj lehet egy tárgy vagy az all
kulcsszó.
instance_place(x,y,obj) - annak az obj
típusú példánynak az id-jét adja, mellyel az aktuális
példány találkozott, mikor (x,y)
helyen volt. Obj lehet egy tárgy vagy az all
kulcsszó. Ha nem létezett, akkor a noone a
visszatérési érték.
instance_create(x,y,obj) - obj
objektum létrehozása (x,y)
pontra. A függvény az új objektum azonosítójával tér
vissza.
instance_copy(v) - aktuális objektum
másolatának létrehozása. A v argumentum
jelzi, hogy a létrehozás eseményt kell-e végrehajtani a
másolathoz. A függvény az új példány azonosítójával tér
vissza.
instance_destroy() - megsemmisíti az aktuális
tárgyat.
instance_change(obj,v) -az aktuális tárgyat az
obj-nak megfelelővé változtatja. A v
jelzi, hogy a végrehajtás a megsemmisítés és létrehozás
eseményből álljon-e (pl. true).
position_destroy(x,y) - megsemmisíti az összes
objektumot, melyek érintkeznek (x,y)
hellyel.
position_change(x,y,obj,v) - az (x,y)
helyen lévő összes tárgyat az obj-nak
megfelelővé változtatja. A v jelzi, hogy a
végrehajtás a megsemmisítés és létrehozás eseményből
álljon-e.
visible - ha értéke igaz, az alak
kirajzolódik a képernyőn, különben nem lesz látható, de
ennek ellenére pl. beléjük lehet ütközni.
sprite_index - az objektumhoz tartozó aktuális
kép (sprite) indexe. Értéke megváltoztatható, hogy egy
másik kép tartozzon az objektumhoz (pl. ha van egy alak
nevű tárgy, valamint a mozgási irányainak megfelelő alakfel,
alakle, stb. sprite-ok, akkor a létrehozásakor
hozzárendelhető egy kép, ha még nem tartozott hozzá
semmilyen, vagy átállítható egy másikra, vagy éppen a
játék során a mozgási irányától függően változtatható
pl. a sprite_index=alakfel módon). A kép
megváltoztatása nem változtatja meg az éppen látható alkép
indexét.
image_number - egy sprite gyakran több
képből, vagyis alképekből áll (a Sprite editor-ban látható
a képek száma; az első az image0). Ez a függvény az adott
objektumhoz aktuálisan tartozó sprite alképeinek számát adja
(csak lekérdezhető).
image_index - ha egy kép alképekből áll,
akkor a program egymás után, körforgásszerűen váltogatja
őket. Ez a függvény az éppen kirajzolt alképet jelzi (0-tól
kezdve van számozva). Értéke meg is változtatható, és akkor
a program ettől az új értéktől kezdve folytatja az alképek
kirajzolását.
image_single - néha szeretnénk csak az egyik
alképet látni és felfüggeszteni a váltogatásukat. Ez
érhető el, ha ehhez a függvényhez rendeljük hozzá a látni
kívánt alkép indexét (az első alkép indexe a 0).
Értékként -1-et adva ciklikusan váltogatja az alképeket.
Ha szeretnénk egy olyan képet körbeforgatni, melynek alképei
az egyes irányoknak megfelelően helyezkednek el (az óramutató
járásával ellentétesen), akkor ez a következő utasítással
érhető el a tárgy lépés eseményében:
{
image_single = direction * image_number/360;
}
Az image_single a GM 6-os
változatában már nincs benne (legalábbis
"hivatalosan", de azért még alkalmazható). Helyette
az image_index függvény használható az alkép
kiválasztásához és az image_speed 0-ra állítása.
Ennek alapján az előző példa:
{
image_index = direction * image_number/360;
image_speed = 0;
}
image_speed - az alképek váltogatásának
sebessége. Ha értéke 1, akkor minden lépéskor kirajzolódik
a következő alkép. Kisebb érték esetén lassul, nagyobb
esetén egyes alképek kimaradnak a gyorsabb mozgás érdekében.
depth - mélység. A pályára legelőször
elhelyezett alak van a legmélyebben, vagyis ezt az összes
többi takarni fogja, ha keresztülmennek rajta. A mélység
alapértéke 0. Ha csökkentjük, akkor az adott objektum egyre
föntebb kerül, míg ha növeljük, egyre lentebb. Egy tárgy
(pl. saját egérmutató) mindig legfelül lesz, ha a Lépés
Vége (End Step) eseményébe (hogy az összes többi esemény
már feldolgozva legyen a mélység alkalmazása előtt) a depth=-y
utasítást helyezzük el.
image_xscale - ezzel a függvénnyel a kép
szélessége állítható. A normális méretet az 1 jelenti.
image_yscale - a kép függőleges méretezése.
1 jelenti, ha nincs méretezés. Jó tudni, hogy a méretezés
(különösen a kicsinyítés) időigényesebbé teszi a
rajzolást, ezenkívül mivel a kép szélességét és
magasságát megváltoztatja, az ütközés eseményre is
befolyással van. A méretezés változtatása használható 3D-s
hatások keltésére.
image_angle - a szög, amellyel a sprite elfordul. Megadható
fokokban, óramutató járásával ellentétes irányban.
A regisztrált GM 7-től használható.
image_alpha - a kép átlátszósága. 1 a
normális beállítás, 0 a teljes áttetszőség. A részben
áttetsző képek kirajzolása lassítja a játékot.
image_blend - keverőszín, mely a sprite rajzolásánál használt.
A c_white az alapértelmezett érték. Más érték megadásakor a sprite
keveredik ezzel a színnel. A regisztrált GM 7-től használható.
A következő függvények értéke nem megváltoztatható, csak
lekérdezhető:
sprite_width - az alak szélessége
sprite_height - az alak magassága
sprite_xoffset - a kép vízszintes eltolása,
ahogy az meg van adva a Sprite properties-ben
sprite_yoffset - a kép függőleges eltolása,
ahogy az meg van adva a Sprite properties-ben
bbox_left - a képet magába foglaló doboz bal
oldala (Bounding box a Sprite properties-ban)
bbox_right - a képet magába foglaló doboz
jobb oldala
bbox_top - a képet magába foglaló doboz
teteje
bbox_bottom - a képet magába foglaló doboz
alja.
« Előző oldal- - - ^Tartalom^- - - Következő oldal »