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