2011. június 19., vasárnap

GameMaker LIB -> GML (Move)

Sokat használtuk a kis behúzogatható ikonokat az Object-eknél, ezentúl viszont csak az Excute Code-ra lesz szükségünk ugyanis ekezdünk GML-ban kisebb-nagyobb kódokat írni. A következő néhány bejegyzésben le fogom írni a GameMaker-ben lévő összes Action lényegét és GML megfelelőjét.

1. fül (Move)

Move Fixed/Move Free
A két Action lényegileg megegyezik, a Move Free annyival bővebb, hogy itt már adott értéket tudunk megadni az irányhoz is. Kódban két változót használunk ezek megadásához:
direction=
speed=

Move Towards Point
Ezt az Action-t akkor használjuk ha azt szeretnénk, hogy az Object egy adott  pont irányába haladjon. Ennek GML-ben a megfelelője a következő funkció:
move_towards_point(x,y,sebesség)

Speed Horisontal/Speed Vertical
Ez a két Action az Object vízszintes és függőleges irányú sebességének megadására alkalmas, könnyen helyettesíthető két változóval:
vspeed=
hspeed=


Set Gravity
Ez a Lib alkalmas platform játékoknál megadni a gravitációt, de használható bármilyen irányú adott nagyságú egyenletes gyorsuláshoz is. Ennek helyettesítére két változót használunk:
gravity=
gravity_direction=


Reverse Horisontal/Reverse Vertical
Ez a két action nem csinál mást mint visszafordítja az Object-et vízszintes vagy függőleges irányban. (A vízszintes vagy a függőleges sebességét megszorozza -1 el.) Kódban a következő képpen néz ki:
vspeed=hspeed*-1
hspeed=vspeed*-1


Set Friction
Ez alkalmas az Object-nek egy egyenletes lassulást (súrlódást) beállítani, kódban ez is egy változóval helyettesíthető:
friction=


Jump to Position
Itt egyszerűen megadhatjuk az x és y koordinátát ahova át szeretnénk helyezni az Object-et:
x=
y=


Jump to Start
Ez az Action arra voló hogy az Object visszaugrik a kezdőhelyére, azonban nem helyettesíthető GML-ben (illetve akkor helyettesíthető ha kezdéskor változókban tároljuk a pozicióját.)


Jump to Random
Ez az Action akkor lehet hasznos ha egy Object-et át szeretnék tenni egy véletlenszerű helyre, megadhatjuk azt is ha rácshoz szeretnénk igazítani. Kódban ez kicsit bonyolultabb, a következő képpen helyettesíthető (a példában 32 pixel széles és magas rácshoz igazítottuk.):

x=floor(random(room_width)/32)*32
y=floor(random(room_height)/32)*32

Aglin to Grid
Az adott Object-et megadott nagyságú rácshoz igazítja, kódban (rács szélessége és magassága 32):
x=floor(room_width/32)*32+32/2
y=floor(room_height/32)*32+32/2

Warp Screen
Ha az Object kimegy a képernyőből akkor átkerül a pálya átellenes oldalára. Ez is egy bonyolultabb kóddal helyettesíthető:

if x>room_width then x=0
if x<0 then x=room_width
if y>room_height then y=0
if y<0 then y=room_height


Move to Contact
Ez az Action arra használható, egy Object-et egy adott irányba elmozdítson addig, hogy éppen találkozzon egy másik Object-el. Ez két féle kóddal helyettesíthető az Object-től függően:

move_contact_all(irány,max_elmozdulás)
move_contact_solid(irány,max_elmozdulás)


Bounce
Ezt az Action-t használjuk, ha azt szeretnénk elérni, hogy egy Object lepattanjon egy másikról, szintén két funkcióval helyettesíthető:

move_bounce_all(összetettség 0 vagy 1)
move_blunce_solid(összetettség 0 vagy 1)

Set Path
Ezt az Action akkor használjuk ha az Object-et egy előre megadott útvonalon szeretnénk mozgatni. Ez is egy funkcióval helyettesíthető:
path_start(path_neve,sebesség,ha_vége_történés,absolute)

ha_vége_történés lehet
0 - stop
1 - újrakezdés a kezdőponttól 
2 - újrakezdés a jelenlegi helyről
3 - visszafelé újra végigjárás

absolute lehet:
true - a path valós kezdőhelyéről kezd
false - az object jelenlegi helyéről indul

End Path
Megálitja az Object-et, akárhol tart az útvonalon, ez GML-ben egy paraméter nélküli funkció:
path_end()

Path Position
Az Object helye az adott útvonalon 0-1 -ig terjedő értéket vehet fel, 0 a Path eleje, 1 a vége. Kódban egy változóval hivatkozhatunk rá:
path_position

Path Speed
Ezzel adhatjuk meg az útvonalon való haladás sebességét, kódban:
path_speed=

Step Towards Point
Ez a parancs nem helyettesíthető egy funkcióval GML-ben, hasonló mint a Move Towards Point azonban ez megáll ha találkozik egy másik Object-el

Step Avioding
Szintén nem helyettesíthető egy funkcióval, arra használhatjuk, hogy adott pont felé haladás közben kikerülje többi Object-et (lecsússzon róla)






Nincsenek megjegyzések:

Megjegyzés küldése