« Előző oldal- - - ^Tartalom^- - - Következő oldal »
A MOZGÁS MEGTERVEZÉSE:
(GM 5.3-tól)
A mozgás megtervezése lehetővé teszi bizonyos tárgyak egyik
helyről a másikra mozgatását, a többi tárggyal (pl. falak)
való ütközést elkerülve. A mozgástervezés összetett
probléma. Lehetetlen olyan általános függvényeket adni,
amelyek minden helyzetben megfelelően működnek. Ezenkívül az
ütközésmentes mozgás számítása eléggé időigényes is,
ezért jól gondoljuk meg, hogy mikor és hogyan használjuk ezt.
A mozgástervezés legegyszerűbb formája, amikor hagyjuk, hogy
egy tárgy tegyen egy lépést a megfelelő irányba,
megpróbálva egyenesen arra menni, ha lehet, de szükség
esetére fenntartunk egy másik irányt is.
Ezeket a függvényeket ajánlott a lépés (step) eseményben
használni.
mp_linear_step(x,y,lepesm,ellmind) - ez a
függvény lehetővé teszi a tárgynak, hogy tegyen egy lépést
x,y irányba. A lépés
nagysága a lepesm paraméterben adható meg. Ha
már azon a helyen van, akkor nem megy tovább. Ha ellmind
értéke igaz, akkor bármilyen tárggyal való ütközéskor
megáll, míg ha hamis, akkor csak a szilárdaknál. Ez a
függvény nem próbál kerülőutakat találni, ha akadályba
ütközik. A függvény visszatér, hogy elérte-e a megadott
helyet.
mp_linear_step_object(x,y,lepesm,obj) - hasonló
az előzőhöz, de most csak obj tárgy
példányai vannak figyelembevéve mint akadályok. Az obj
lehet egy tárgy vagy példányazonosító. GM 6.1-től.
mp_potential_step(x,y,lepesm,ellmind) - hasonló
az előzőhöz, de ez a függvény megpróbálja kikerülni az
akadályokat. Ha a tárgy neki akar menni egy szilárdnak (vagy
akármilyennek, ha ellmind igaz), akkor a
függvény egy olyan irányt választ, amellyel kikerülhető a
tárgy. A megközelítés működése nem garantált, de a
legkönnyebb esetekben hatásosan elmozgatja a megadott helyre. A
függvény visszatér, hogy elérte-e a célt.
mp_potential_step_object(x,y,lepesm,obj) -
hasonló az előzőhöz, de most csak obj tárgy
példányai vannak figyelembevéve mint akadályok. Az obj
lehet egy tárgy vagy példányazonosító. GM 6.1-től.
mp_potential_settings(maxirv,kerlep,elore,helyben)
- az előző függvény számos paraméterrel működik, melyek
értéke ennek használatával megváltoztatható.
A működési elv a következő: először megpróbál egyenesen
a cél felé menni. Előre megnézi a lépések számát, mely az
elore paraméterrel beállítható (az
alapértelmezett érték a 3). Ennek csökkentésével a tárgy
később fog irányt váltani, míg növelésével korábban. Ha
a vizsgálat ütközést érzékel, akkor elkezd keresni jobbra
és balra a legjobb irány megtalálására. Ez a kerlep
paraméterrel állítható (alapértelmezett értéke 10),
melynek növelése még több mozgási lehetőséget ad, de
lassú lesz. A mozgó tárgynak van egy pillanatnyi iránya is. A
maxirv jelzi, hogy egy lépésben hányszor
lehet megváltoztatni az irányt (az alapértelmezés 30). Ha
ennek értéke nagy, a tárgy könnyebben megtalálja a célhoz
vezető utat, de a nyomvonal elég csúnya lesz, míg ha kicsi,
akkor a nyomvonal egyenletesebb lesz, de a tárgy nagy
kitérőket tehet (és néha meg sem találja a célt). Amikor
nincs lépés, a viselkedés a helyben
paraméter értékétől függ. Ha ennek értéke igaz (ez az
alapértelmezés is), a tárgy forogni fog a helyén a maxirv
paraméter értékének megfelelően, míg ha értéke hamis,
semmilyen mozgást nem végez. Ennek hamisra állítása pl.
autóknál hasznos, de ez csökkenti a nyomvonal
megtalálásának esélyét.
A feltételezett elérés csak helyi információkat használ
fel, ezért a megfelelő útvonal megtalálása csak akkor
lehetséges, ha ez a helyi információ elegendő hozzá.
Például - legtöbbször - egy útvesztőből való
kitalálásra nem elég.
(A további, ezzel a témakörrel
kapcsolatos függvények csak a GM regisztrált
változatában használhatók.)