Abode Flash – Lövöldözős játék készítése

MEGOSZTÁS

Ha tetszett a cikk, akkor nyugodtan oszd meg ismerőseiddel, valószínű ők is örülni fognak neki.

A mai nap egy újabb játék készítését mutatom meg nektek!

Ezeket nagyon egyszerű elkészíteni, de mégis nagyon látványos!  A préda valahogy mozog a képernyőn, s ha a felhasználó rákattint, akkor a zsákmány meghal, hiszen a vadász lelőtte. Ennyi lenne az egész!

 

Nah lássuk a menetét : 

 

Először készítsük el fegyverünk célkeresztjét. Ennek segítségével fogjuk lelőni a zsákmányt. A célkeresztet alakítsuk moziklippé és adjunk neki instance nevet:(célkereszt)!

A célkeresztnek követnie kell az egér mozgását. Írjuk a következő szkriptet a célkereszt moziklipre:

onClipEvent (load) {
startDrag (this);
Mouse.hide();
}

 

Beállítjuk, hogy az aktuális moziklip kövesse az egér mozgását, valamint a Mouse objektum hide utasításával az egeret eltüntetjük.

Adjunk hozzá még egy layert – az eddigi alá – az animációhoz. Így a Scene1-n két layer szerepel. Az új rétegre rajzoljuk meg a prédát. Gondoljuk végig, mit is kell csinálnia a prédának ha rákattintottunk. Most az egyszerűség kedvéért csak tűnjön el. 

A jólismert gomb szimbólum segítségével ezt az eseményt könnyen tudjuk kezelni. Tehát alakítsunk a prédát gombbá, majd azt moziklippé. Adjunk a moziklipnek instancenevet(preda)! A gombon szerepeljen a alábbi kód:

on (release) {
setProperty (this, _visible, false);
}

Ha lefuttatjuk a mozinkat, akkor már-már tökéletesen működik, azzal a “kis” hibával, hogy a vadászat korántsem sportszerű, hiszen a préda nem mozog. 

Rajzoljuk meg a második layerre a vadászterületet, amiben a préda mozoghat. 
A példában 

  • a téglalap bal felső sarkának koordinátái: (28,28)
  • Jobb alsó sarkának koordinátái: (425,325)

A préda véletlenszerűen elmozdulhat. Ennek x irányú – vízszintes – komponensét jelöljük dx-vel, dy-nal pedig az y irányú – függőleges – összetevőjét. Ekkor viszont a vad csak egy irányba mozoghatna, így véletlenszerűen megváltoztatjuk mozgásának irányát. Mozgx, mozgy jelöli az új poziciót. Ha ez a megadott területen van, akkor elmozdítjuk a prédát. Mivel a különben ágat nem fejtjük ki, így ha a feltételek nem teljesülnek -nem a megadott területen belül marad a vad-, akkor a zsákmány helyben marad. A preda moziklipre írjuk a következőt: 

onClipEvent (enterFrame) {
dx=Math.random (3)*5;
dy=Math.random (3)*5;
if (Math.random ()>0.5) {
dx=-dx;
}
if (Math.random ()>0.5) {
dy=-dy;
}
mozgx=this._x+dx;
mozgy=this._y+dy;
if (mozgx>35 && mozgx<415) {
this._x=mozgx;
}
if (mozgy>35 && mozgy<315) {
this._y=mozgy;
}
}

Ekkor a prédánk a megadott határokon belül mozog. Már csak azt kell megoldani, hogy ne csak egy prédára tudjunk lőni. Jó megoldás az is, ha a libraryből a színpadra vonszolunk példányokat.

A fent említett módszer helyett nézzünk egy másikat. Futási időben készítjük el a további példányokat. Adjunk hozzá mégegy layer a mozinkhoz a főidőegyenesen. Ezen réteg első képkockájában szerepel az alábbi kód:

stop ();
max=26;
tomb=new Array();
for (i=1; iduplicateMovieClip (_root.preda, “preda”+i, -i);
tomb[i]=eval(“preda”+i);
tomb[i]._x=random(350)+35;
tomb[i]._y=random(250)+35;
}

 

Ez a jól ismert “klónozási” eljárás. A moziklipek mélysége ez estben -1, -2,… lesz. Futtasuk le mozinkat. Minden tökéletesen működik, azzal a kis hibával, hogy a célkereszt néha eltűnik egy-egy zsákmány mögött. Cseréljük célkeresztünk mélységét a legelső szinten lévőével. Mivel a moziklipek mélysége csökken, így annak a legnagyobb a mélysége, amely a legelső szinten van. Egészítsük az első képkockán szereplő kódot:

_root.celkereszt.swapDepths(1);

Játékunkat már csak ki kell csinosítani. Rajzoljuk meg a vadászterületet, valamint tegyünk fel egy szövegdobozt a színpadra, amit dinamikusan kezelünk.!Adjunk ennek változónevet (vadaksz)! Ebben tüntetjük fel a vadak számát a vadászterületen. 

A vadak számát jelöljük psz-szel. Ez kezdetben megegyezik a duplikációk számával, azaz max-szal (Max-1 darab duplikáció van plusz még az eredeti). A főidőegyenes első képkockáján lévő kódot egészítsük ki az alábbival:

psz=max;
_root.vadaksz=psz;

Már nincs más dolgunk, mint amikor egy vadat lelőttek, akkor a vadak számát csökkentsük. Ennek alapján bővítsük ki a vad gombjának az scriptjét:

_root.psz–;
_root.vadaksz=_root.psz;

A vadak számát csökkentjük, és a szövegdobozba kiírjuk ezt az eredményt.

Ha a vadász lelőtte az összes vadat, akkor gratuláljunk neki. Ezt a képernyőtervet készítsük el a főidőegyenes második képkockájára. Helyezzünk itt el még egy gombot, amellyel újrakezdheti a felhasználó a játékot. Ezen nem teszünk mást, mint visszaugratjuk a lejátszófejet az első képkockára.

on (release) {
gotoAndPlay (1);
}

Ne felejtsük el megállítani a lejátszást az egyes képkockákon!

stop ();

A vad gombjának a kódját tovább bővítjük:

if (_root.psz==0) {
_root.gotoAndStop(2);
}

 

Tehát a beágyazott gombon lévő kód teljes egészében így néz ki:

on (release) {
setProperty (this, _visible, false);
_root.psz–;
_root.vadaksz=_root.psz;
if (_root.psz==0) {
_root.gotoAndStop(2);
}
}

Ha a vadásznak elfogy a lőszere, és még van élő préda, akkor vesztett. Írjuk ezt a harmadik képkockára, azaz itt szerepeljen egy felirat, melyben közöljük a játékossal, hogy vesztett. Ezen a képkockán is állítsuk meg a lejátszófejet!

stop ();

Térjünk vissza a játék színterére, az első képkockára. Ide helyezzünk fel még egy szövegdobozt, melyben kijelezzük a rendelkezésre álló lőszermennyiséget. A szövegdobozt dinamikusan kezeljük, adjunk neki változónevet (toltsz)!

Kezdetben kapjon a játékosunk valamennyi töltényt, ezt a loszer változóban tároljuk. Az első képkockán a kódot egészítsük ki az alábbiakkal:

loszer=111;
_root.toltsz=loszer;

Már nincs más dolgunk, mint megszámolni a lövéseket és egy alkalmas pillanatban a lejátszófejet a harmadik képkockára ugratni. A lövéseket meg tudjuk számolni például a célkereszten, amikor lenyomjuk az egérgombot. Ennek figyelésére valamelyik egéreseményt használjuk. A célkereszt moziklipen lévő kódhoz még írunk:

onClipEvent (mouseUp) {
_root.loszer–;
_root.toltsz=_root.loszer;
g=_root.loszer;
if (_root.loszer==0 && _root.psz>0) {
_root.gotoAndPlay(3);
}
}

Csökkentjük a töltények számát, ezt kijelezzük. Ha elfogyott az összes lőszer és még van élő vad, akkor ugrassuk a lejátszófejet a harmadik képkockára, ahol közöljük a játékossal, hogy vesztett.

 

Na ennyi lenne az egész!

persze ezt még tökéletesítheti aki akarja!

 

Köszönöm a figyelmet!

Még találkozunk!

 

 

 

 

 

 

MEGOSZTÁS

Ha tetszett a cikk, akkor nyugodtan oszd meg ismerőseiddel, valószínű ők is örülni fognak neki.

HOZZÁSZÓLÁS

Ha nem hagy nyugodni az, amit a cikkben olvastál, akkor nyugodtan írd meg kérdésed vagy észrevételed kommentbe. Így szerzőnk könnyen tud neked válaszolni.

Vélemény, hozzászólás?