« 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.)