2011. június 18., szombat

GameMaker - 11. lecke

Az előző néhány leckében egy felülnézetes lövöldözős valamit készítettünk. Ma ezt a játékot újra elkészítjük kicsit másképp. Itt az ideje, hogy megismerkedjünk a GameMakerLanguige programozási nyelvel. A GML egy egyszerű programozási nyelv mellyel GameMaker-ben egy vagy több Action-t helyettesíthetünk.
Nyissuk meg GameMaker-ben az első játék.gm81 fájlt. Ha nincs meg a forráskód akkor innen letöltheted.
Nyissuk meg elsőként az obj_player tulajdonságait.


Lényegileg az összes Action helyettesíthető egy Excute Code Action-el Ezt a control fülön találjuk. Elsőként a Step Event-be hűzzunk egy Excute Code Action-t. 


A GML kódoknak az az előnye, hogy az összes más GameMaker-es Action-t lehet benne helyettesíteni, és még sok új lehetőség is van amit másképp nem tudnánk elérni. A kódszerkesztőbe háromféle parancsot  írhatunk.
  • Ha valami igaz akkor valami történik (if-then)
  • Valami egyenlő valami (=)
  • Előre megadott funkció
A Step Event-ben van egy Set Friction és egy Set Variable Action, ezért a kódszerkesztőbe két egyenlőséget fogunk írni. Elsőként a friction változót fogjuk beállítani 0.1-re. Ehhez gépeljük be a következő kódot: friction=0.1  (ha egy változónak az értékét akarjuk megadni akkor mindíg ilyen formában fogjuk megtenni.)
A Set Variable Action is hasonló itt a következő kódot használjuk: image_angle=direction (Ez esetben két változót tettünk egyenlővé, a Sprite iránya lesz egyenlő a haladási iránnyal.)
Ha egy kódba több parancsot is teszünk ezeket mindig új sorba írjuk. 


(A kódszerkesztő különböző színekkel emeli ki a vátozókat, a számokat, a funkciókat, és a megjegyzéseket.)
A pipára kattintva zárjuk be a kódszerkesztőt. Most már három Action van a Step Event-ben de nekünk már csak az Excute Code-ra van szükségünk, mert abban helyettesítettük a másik kettőt.  Töröljük ki a Set Friction és a Set Variable Action-t.

Ha most a játék futtatásakor nincs különbség akkor jól dolgoztunk, továbbhaladhatunk a Keyboard Event-ekkel. A Move Free Action-t két egyenlőséggel helyettesítjük. (speed=Move Free Action speed mezeje direction=Move Free Action direction mezeje) Adjunk hozzá a Keyboard <Left> Event-hez egy Excute Code Action-t és gépeljük bele a következő kódot:

speed=speed
direction=direction+10

(a parancsok sorrendje nem lényeges)


Ezután töröljük ki az Excute Code Action mellől a Move Free Action-t.

Ezt ismételjük meg az összes Keyboard Event-nél, figyeljünk hogy mindíg az addott speed és direction változás írjuk a kódba.

Az Outside Room Event-ben lévő Warp Screen Action-t nem tudjuk egy funkcióval helyettesíteni, ezért a következő kódot használjuk:

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

Az x és az y változók az Object koordinátái, a room_width és a room_height változók az ablak szélességét és  magasságát takarják.


A bonyodalom a press <Space> Event-nél adódik, ugyanis a Create moving Action-t nem lehet egy az egyben helyettesíteni. Excute Code-ba írjuk a következőt:

instance_create(x,y,obj_bullet)

Az instance_create funkciónak három paramétere van (ezeket írjuk zárójelbe) 
(x_koordináta,y_koordináta,object_neve)

Ezután töröljük ki a Create moving Action-t és nyissuk meg az obj_bullet tulajdonságait.

Hozzunk létre egy Create Event-et és íruk egy Excute Code Action-be a következőt:

speed=10
direction=obj_player.direction

(ezzel a kóddal helyettesítjük a Create moving Action-nek a moving részét.)
Ha egy másik Object változójára hivatkozunk először az Object nevét írjuk, aztán ponttal elválasztva a változó nevét.


Végül az Outside room Event-ben lévő Destroy Instance Actiont cseréljük ki a következő funkcióra:
 instance_destroy() 

(ennek a funkciónak nincsenek paraméterei, automatikusan leveszi a pályáról az adott Object-et.)

Most mentsük el a játékot. Ha mindent jól csináltunk nincs látványos változás a játékban, azonban később könnyebb lesz a forráskódot szerkesztenünk ha GML-t használunk.


Ha bármi problémád akad, vagy kérdésed van az Kapcsolatfelvétel oldalon megtalálod az elérhetőségeimet.

Itt letöltheted a példafájlt melyet elkészítettünk ebben a leckében.

Jó szorakozást a GameMaker-hez, a következő lecke hamarosan érkezik. 

Nincsenek megjegyzések:

Megjegyzés küldése