« Előző oldal- - - ^Tartalom^- - - Következő oldal »
MOZGÁS ÉS ELHELYEZKEDÉS:
A játékok egyik fontos jellegzetessége az objektumpéldányok
mozgása. Minden példánynak van beépített x és y
változója, melyek a példány helyzetét jelzik (pontosabban
azt a helyet, ahová a példányhoz tartozó kép eredete
(origin) el lett helyezve). A 0,0 hely a pálya bal fölső
sarka. Az x és y változóinak megváltoztatásával lehet a
példány helyzetét megváltoztatni. Ez a módja annak is, ha
bonyolultabb mozgásokat akarunk a tárgyhoz beállítani. Ezt a
kódot jellemzően a tárgy Lépés (Step) eseményében
helyezzük el.
Ha a tárgy állandó sebességgel és iránnyal mozog, van egy
könnyebb mód ennek elvégzésére. Minden objektumpéldánynak
van egy vízszintes sebessége (hspeed) és egy
függőleges sebessége (vspeed), mindkettő
lépésenkénti képpontokban jelölve. Egy pozitív értékű
vízszintes sebesség jobbra mozgást, míg egy negatív
értékű balra mozgást jelent. A pozitív függőleges
sebesség lefelé irányuló, a negatív függőleges sebesség
pedig fölfelé irányuló. Ezeket a változókat tehát csak
egyszer kell beállítani (pl. a Létrehozás (Create)
eseményben) az objektumpéldány állandó mozgásának
megadásához.
Egy irány (fokokban 0 és 359 között) és egy sebesség
(nem-negatív) használatával is meghatározható a mozgás.
Ezen változók beállításával és kiolvasásával egy
tetszőleges mozgás adható meg (belsőleg ez megváltoztatja a hspeed
és vspeed értékeit). Létezik ezenkívül a
súrlódás, a tömegvonzás és a tömegvonzás iránya. Végül
a motion_add(irany,sebesseg) függvénnyel egy mozgás
adható a pillanatnyihoz.
x - x-helyzet (a képernyő
oszlopa).
y - y-helyzet (a képernyő
sora).
xprevious - az előző x-helyzet.
yprevious - az előző y-helyzet.
xstart - kezdő x-helyzet a
pályán.
ystart - kezdő y-helyzet a
pályán.
hspeed - vízszintes elmozdulás sebessége
(pozitív szám: jobbra mozgás, negatív: balra).
vspeed - függőleges elmozdulás sebessége
(pozitív szám esetén le, negatívnál fölfelé mozog).
direction - aktuális irány (0-360, az
óramutató járásával ellenkező irányban, 0 = jobbra).
speed - aktuális sebesség (lépésenkénti
képpontok).
friction - aktuális súrlódás
(lépésenkénti képpontok).
gravity - aktuális tömegvonzás
(lépésenkénti képpontok).
gravity_direction - tömegvonzás iránya (270 a
lefelé irányuló).
motion_set(ir,seb) - mozgás beállítása ir
irányba, seb sebességgel.
motion_add(ir, seb) - mozgás hozzáadása az
aktuális mozgáshoz (mint egy vektor hozzáadása).
place_free(x,y) - ütközésmentes-e az (x,y)
koordinátájú hely. Gyakran használatos ellenőrzésre a
példány új helyre való mozgatásakor.
place_empty(x,y) - üres-e az (x,y)
koordinátájú hely. Ez a függvény a nem szilárd
példányokat is számításba veszi.
place_meeting(x,y,obj) - találkozik-e a
példány (x,y) helyen az obj
objektummal. Obj lehet az objektum neve,
azonosítója (id), vagy az all, illetve other
különleges változók.
place_snapped(vracs,fracs) - a példány a
rácsértékek szerint van-e igazítva.
move_random(vert,fert) - a példány mozgatása
egy véletlenszerű szabad helyre a megadott értékhatárokon
belül.
move_snap(vert,fert) - a példány mozgatása a
rácsértékekhez igazítottan.
move_wrap(vsz,fug,perem) - a példány
áthelyezése a másik oldalra, mikor elhagyja a pályát. A vsz
jelzi, hogy az áthelyezés vízszintes-e, fug
hogy az áthelyezés függőleges-e. A perem
jelzi, hogy a példány eredetének (Origin) milyen távol kell
lennie a pályától, mielőtt az áthelyezés megtörténik. Ez
a függvény jellemzően a Kívül (Outside) eseményben
használatos. A GM 6-os
változatától használható.
move_towards_point(x,y,seb) - mozgatás (x,y)
pont irányába seb sebességgel. Az adott
pontban nem fog megállni! Ha azt akarjuk, hogy megálljon, akkor
ez megoldható pl. azzal a módszerrel, hogy a
célkoordinátákat elmentjük egy-egy változóba (pl. celx
és cely), igazra állítunk egy mozgást ellenőrző
változót (pl. mozog), majd a Lépés eseményben ennek
igaz volta esetén ellenőrizzük, hogy a példány elérte-e az
adott pontot, s ha igen, akkor megállítjuk és beállítjuk a
megfelelő változóértékeket, ami a példában szereplők
alapján a következő módon történhet:
if mozog==true
if position_meeting(celx,cely,self)
{motion_set(0,0); celx=noone; cely=noone; mozog=false}
Fontos, hogy az eredet (origin) a kép közepén legyen,
hogy a tárgy biztosan keresztezze a mozgás célját jelölő
pontot. A példa nemcsak a move_towards_point, hanem a motion_set
függvénnyel is alkalmazható, melynél az irány a point_direction
függvénnyel adható meg.
move_bounce_solid(pon) - visszapattanás
szilárd tárgyakról. Pon igazra állítása
esetén nemcsak egyenes, hanem ferde falakról is pontos lesz a
visszapattanás.
move_bounce_all(pon) - visszapattanás minden
tárgyról.
move_contact_solid(ir,maxtav) - a példány
mozgatása ir irányba, míg el nem ér egy
szilárd objektumot. Ebben az esetben megáll. A maxtav-val
a távolság nagysága állítható be (negatív szám
megadásával tetszőleges a távolság).
move_contact_all(ir,maxtav) - hasonlít az
előzőre, de ennek alkalmazásával megáll minden
ütközéskor, nemcsak a szilárd tárgyaknál.
move_outside_solid(ir,maxtav) - a példány
mozgatása ir irányba, amíg már nem fekszik
egy szilárd tárgyon belül. Ha a pillanatnyi helyen nincs
ütközés, akkor nem mozdul el.
move_outside_all(ir,maxtav) - hasonlít az
előzőre, de ez minden tárgyra érvényes, nemcsak a
szilárdakra.
distance_to_point(x,y) - az aktuális objektumot
határoló doboz (bounding box) távolsága (x,y)
ponttól.
distance_to_object(obj) - az aktuális
objektumot tartalmazó doboz távolsága obj
objektumtól.
position_empty(x,y) - értéke igaz, ha (x,y)
helyen nincs semmi.
position_meeting(x,y,obj) - értéke igaz, ha az
(x,y) helyen van az obj
objektum. Az obj lehet az objektum neve,
azonosítója, vagy a self, other és all
kulcsszavak.
path_index - a követendő nyomvonal
jelzőszáma. A -1-re állítás jelenti, hogy nincs nyomvonal.
(Az 5.3-as változatban ez a függvény csak lekérdezhető!)
path_position - elhelyezkedés az aktuális
nyomvonalon. 0 a nyomvonal kezdetét, 1 a végét jelenti, az
értéknek 0 és 1 közé kell esnie.
path_orientation - a nyomvonal tájolása (az
óramutató járásával ellenkező irányban). A 0 a normális
elhelyezkedést jelzi.
path_scale - a nyomvonal méretezése.
Növelésével a nyomvonal nagyobb lesz. 1 az alapértelmezett
érték.
A következő öt függvény a GM 5.3-as
változatától használható:
path_start(nyomv,seb,veges,absz) - egy nyomvonal
indítása a tárgy számára. A nyomv az
indítandó nyomvonal neve. Seb a sebesség,
mellyel a nyomvonalat követni kell. Negatív sebességérték az
ellenkező irányba való haladást jelenti. Veges
jelöli, hogy a nyomvonal végén milyen esemény történjen:
0=megállás, 1= újrakezdés a kiindulóponttól (ha nem
önmagába zárt a nyomvonal, akkor ugrás a kezdőpontra),
2=folytatás a jelenlegi helytől, 3=elindulás az ellenkező
irányba, vagyis a sebesség előjelének megváltoztatása. Az absz
értéke igaz vagy hamis lehet. Igaz esetén a nyomvonal
abszolút koordinátái használtak, míg hamis esetén a
nyomvonal viszonylagos a tárgy pillanatnyi helyzetéhez képest.
Pozitív sebesség esetén a nyomvonal kiindulópontja a
pillanatnyi helyre kerül, és onnan kezdődik. Negatív
sebesség esetén a nyomvonal végpontja kerül a pillanatnyi
helyre, és attól kezdve követi azt visszafelé a nyomvonal.
path_end() - a nyomvonal követésének
befejezése a tárgy számára.
path_index - a jelenlegi nyomvonal indexe, amit a példány követ.
Közvetlenül nem változtatható meg, de a fentebbi függvénynek használnia kell.
GM 7-től.
path_position - a jelenlegi nyomvonal helyzete. 0 a nyomvonal kezdete, 1
pedig a vége. Az értéknek 0 és 1 között kell lennie. GM 7-től.
path_positionprevious - a tárgy előző helye a
jelenlegi nyomvonalon. Ez pl. az ütközés eseménynél
használható fel, hogy a tárgy kerüljön vissza az előző
helyére.
path_speed - a sebesség (képpont/lépés),
mellyel a nyomvonalon haladni kell. A negatív sebességérték
használható a visszafelé mozgatásra.
path_orientation - irányultság (óramutató járásával ellentétes),
melybe a nyomvonal végrehajtódik. 0 a normális irányultsága a nyomvonalnak.
GM 7-től.
path_scale - a nyomvonal méretezése. Növelésével a nyomvonal nagyobb
lesz. Az alapértelmezett érték az 1. GM 7-től.
path_endaction - a nyomvonal végénél
történő cselekvés. A path_start függvénynél
használt értékek használhatók itt is.
« Előző oldal- - - ^Tartalom^- - - Következő oldal »