skabe en space lnvaders spil i corona: færdigbehandling gameplay

, skabe en space lnvaders spil i corona: færdigbehandling gameplay,,,,, 24,,,,,,,,, 4,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss. denne post er en del af en ny serie: skabe en space lnvaders spil i corona. skabe en space lnvaders spil i corona: gennemførelse af gameplay,,, hvad du vil lave, i den tidligere del af denne serie, vi har ham er skibet bevæger sig, har angriberne bevæger sig, og påvist, når en spiller kugle havde ramt en indtrænger.i denne sidste del af serien, vil vi få fjenden angriber den aktør, klare niveauer, og tilføje muligheden for spiller dø.,,, 1.   kugler, ofte har en af de indtrængende affyrer en kugle.vi skal bruge en timer, til at opnå dette.der tilføjes følgende kode, gamelevel. lua,.,, hvis funktion fireinvaderbullet() (# invaderswhocanfire > 0) og lokale randomindex = matematik. tilfældigt&#invaderswhocanfire) lokale randominvader = invaderswhocanfire [randomindex] lokale tempinvaderbullet = opvisning. newimage ("laser. men heller ikke dér er menneskene sikre", randominvader. x, y + invadersize randominvader. /2) tempinvaderbullet.name = "invaderbullet" scene. betragtning: indsæt (tempinvaderbullet) fysik. addbody (tempinvaderbullet "dynamiske") tempinvaderbullet.gravityscale = 0 tempinvaderbullet.isbullet = sandt tempinvaderbullet.issensor = sandt tempinvaderbullet: setlinearvelocity (0400) tabel. indsæt (invaderbullets, tempinvaderbullet) andre levelcomplete() sidste ende i denne funktion, er vi for det førstetjek, om det, invaderswhocanfire, tabel har mindst én   element i det.hvis det er tilfældet, så vil vi gennemføre den kode, i hvis erklæring.ellers betyder det niveau er ovre, og vi påberåbe sig, levelcomplete, funktion, vil der altid være mindst én   fjende, der kan fyre en kugle, indtil du dræber den sidste fjende, på hvilket tidspunkt, invaderswhocanfire,   tabel vil være tomt.,,, inden for hvis   erklæring, vi skaber et tilfældige tal, randomindex, afhængigt af hvor mange punkter i den, invaderswhocanfire, tabel.vi vælger det punkt på dagsordenen,  , randominvader, fra den, invaderswhocanfire, tabel.,, skaber vi en kugle image, give det et navn, fast ejendom, så vi kan identificere det senere, sæt den i stedet, og fastsætte de samme egenskaber, som vi gjorde på spiller kugler.vi sætter en kugle i den, invaderbullets, bord, så vi kan henvise det senere.,,, er vi nu nødt til at oprette timeren.der tilføjes følgende til den scene: vis metode.,,, funktion scene: vis (tilfælde), hvis (fase = = "har"). klip... runtime: addeventlistener ("ulykke", oncollision) invaderfiretimer = timer. performwithdelay (1500, fireinvaderbullet - 1), hver 1500 millisekunder  , fireinvaderbullet, er gældende.bemærker, at sidstnævnte parameter, vi vedtager i - 1, hvilket betyder at timeren gentager for evigt.når du skabe en timer, der gentager altid, du bør i sidste ende at annullere den.vi gør det på, scene: skjule, fungere som vist nedenfor.,,, funktion scene: skjule (tilfælde), hvis (fase = = "vil"). klip... runtime: removeeventlistener ("ulykke", oncollision) timer. - (invaderfiretimer), 2.   fjernelse af kugler, som spiller kugler, angriberne kugler vil bevæge sig væk, og fortsæt, tager værdifuld hukommelse.for at afhjælpe dette, vi fjerner dem, ligesom vi gjorde med deres kugler.,, hvis funktion checkinvaderbulletsoutofbounds() (# invaderbullets > 0) for i =&#invaderbullets, 1 - 1, hvis (invaderbullets [i]. y > opvisning. contentheight), så invaderbullets [i]: removeself() invaderbullets [i] = 0 tabel. fjerne (invaderbullets, jeg sidst ende), denne kodeks er meget lig kontrol, hvis deres kugler er ude, så jeg vil ikke drøfte dens gennemførelse i detaljer.,,, 3.   påvisning af et hit, trin 1: sammenstød, sporing, det næste skridt er at undersøge, om en fjende er kuglen har ramt spiller.der tilføjes følgende kode til, oncollision,.,,, funktion oncollision (tilfælde), hvis event.phase = = "begyndte"). klip... hvis (event.object1.name = = "spiller" og event.object2.name = = "invaderbullet") og tabel. fjerne (invaderbullets, tabel. indexof (invaderbullets, object2 tilfælde.)). object2: removeself() event.object2 = 0, hvis (playerisinvincible = = falsk), så killplayer() ende vende tilbage, hvis (event.object1.name = = "invaderbullet" og event.object2.name = = "spiller") og tabel. fjerne (invaderbullets, tabel. indexof (invaderbullets, begivenhed. object1) begivenhed. object1: removeself() event.object1 = 0 hvis (playerisinvincible = = falsk), så killplayer() ende vende tilbagesidste ende, ligesom før, ved vi ikke, hvad formål, event.object1, og event.object2, vil være så vi bruger to, hvis udtalelser for at kontrollere begge situationer.vi fjerner besættelsesmagtens kugle fra, invaderbullets, tabel, fjerne det fra skærmen, og sæt den til nul.hvis en spiller er ikke uovervindelig, vi dræber det, trin 2: at dræbe den aktør, når vi dræber den aktør, giver vi ham en kort tid med uovervindelighed.dette giver brugeren en tid, til at få fokus på kampen.hvis de, numberoflives, variable er lig med 0, ved vi, at kampen er forbi, og overgangen til start, scene, hvor brugeren kan begynde et   nye spil.,, funktion killplayer() numberoflives = numberoflives - 1; hvis (numberoflives < = 0), så gamedata.invadernum = 1 komponist. gotoscene ("start"), andet playerisinvincible = sandt spawnnewplayer() ende ende, trin 3: de en ny spiller,,, spawnnewplayer, funktion er aktør i og ud i et par sekunder.det er en god effekt at lade brugeren ved, at skibet er midlertidigt uovervindelig.,, funktion spawnnewplayer() lokale numberoftimestofadeplayer = 5 lokale numberoftimesplayerhasfaded = 0 lokale funktion fadeplayer() player.alpha = 0; overgangen. - spiller, {tid = 400, alpha = 1)) numberoftimesplayerhasfaded = numberoftimesplayerhasfaded + 1 (numberoftimesplayerhasfaded = = numberoftimestofadeplayer så playerisinvincible = falske ende ende fadeplayer() timer. performwithdelay (400, fadeplayer, numberoftimestofadeplayer), bruger vi en lokal funktion,  , fadeplayer,, der anvender overgangen bibliotek for at ændre, alpha,   værdi af, spiller.vi holder styr på, hvor mange gange, spiller, er forsvundet ind og ud, og sæt spillers uovervindelighed, falsk, når vi når frem til  , numberoftimestofadeplayer,.   vi bruge en timer at kalde den, fadeplayer, funktion, men mange gange  , numberoftimestofadeplayer, er lig med.,, løb spil til at teste det.de spiller, skal dø, når en fjende er kugle rammer skibet.hvis tre   kugler ramte skibet, du burde være taget til start, scene, hvor du kan starte et nyt spil.,,, for at gøre det lettere at prøve, bemærkning ud til at  , moveinvaders i, gameloop, fungere som vist nedenfor.,,, funktion gameloop() checkplayerbulletsoutofbounds()... moveinvaders() checkinvaderbulletsoutofbounds(),, 4.gennemførelsen af en plan, hvis du har formået at dræbe hver eneste fjende, spillet ville have ringet, levelcomplete, funktion, som ikke findes endnu.vi ordner det.der tilføjes følgende kode blok.,,, funktion levelcomplete() gamedata.invadernum = gamedata.invadernum + 1 (gamedata.invadernum < = gamedata. maxlevels) og komponist. gotoscene ("gameover"), andet gamedata.invadernum = 1 komponist. gotoscene ("start") og sidst, vi tillæg gamedata.invadernum, og, hvis det er mindre end  , gamedata. maxlevels, vi overgang til, gameover, scene.i modsat fald aktør har afsluttet hver plan, og vi gør gamedata.invadernum, til 1.vi overgang til start, scene, hvor de spiller, kan begynde et nyt spil.,,, en let måde at prøve det af, at de opfordrer til, at der  , moveinvaders,   i, gameloop,   funktion og bruge knapperne til skibet.hvis det er for svært, så kan du også komme ud to gange til, killplayer, i  , oncollision metode.,,, 5.spillet er slut, tilsættes følgende kode, gameover. lua,   at gennemføre spillet over scenen.,,, lokale komponist = kræver ("komponist") lokale scene = komponist. newscene() lokale starfieldgenerator = kræver ("starfieldgenerator") lokale pulsatingtext = kræver ("pulsatingtext") lokale nextlevelbutton lokale stargenerator funktion scene: skabe (tilfælde) lokal gruppe = self.view stargenerator = starfieldgenerator. nye (200, gruppe 5) lokale invaderstext = pulsatingtext. nye ("plan fuldstændig", display.contentcenterx, display. contentcentery-200 "sejr", 20, gruppe) invaderstext: setcolor (1, 1, 1) invaderstext: pulsate() nextlevelbutton = display. newimage ("next_level_btn. men heller ikke dér er menneskene sikre", display.contentcenterx, display. contentcentery)gruppe: indsæt (nextlevelbutton) funktion scene: vis (tilfælde) lokale fase = event.phase komponist. removescene ("gamelevel"), hvis (fase = = "havde"), så nextlevelbutton: addeventlistener ("bank", startnewgame) runtime: addeventlistener ("enterframe", stargenerator) ende fungere scene: skjule (ref.) lokale fase = event.phase hvis (fase = = "vil"), så runtime: removeeventlistener ("enterframe", stargenerator) nextlevelbutton: removeeventlistener ("bank", startnewgame) ende funktion startnewgame() komponist. gotoscene ("gamelevel") og scene: addeventlistener ("skaber", scene) scene: addeventlistener ("vis", scene) scene: addeventlistener ("gemme", scene) tilbage, thi scenen,kode er meget lig den, start, scene, så du bør være bekendt med det nu. - 6.kolliderer med en fjende, de sidste kollision kontrol, vi har brug for at udføre, er et sammenstød mellem spiller, og af de indtrængende.der tilføjes følgende kode hindring for, oncollision, metode, vi tidligere har set.,, funktion oncollision (ref.) - klip... hvis (event.phase = = "begyndte"). klip... hvis (event.object1.name = = "spiller" og event.object2.name = = "fjende"), så numberoflives = 0 killplayer(), hvis (event.object1.name = = "fjende" og event.object2.name = = "spiller"), så numberoflives = 0 killplayer() ende, som sædvanlig, er vi nødt til at se i begge kollision situationer.vi fastsætter, numberoflives, til 0, og ring, killplayer,.ved at fastsætte, numberoflives, til 0, og påberåbe sig  , killplayer, spillet er slut, og spillet overgange til start, scene.,,, 7.flere elementer, det fuldender vores spil, men jeg foreslår, at du forsøger at udvide kampen med et par yderligere egenskaber.f.eks. kunne de vise deres liv i en hud.,, jeg har også medtaget en ufo grafisk i kilden filer.du kunne prøve at lave en ufo tilfældigt anføres, og hvis spiller rammer den med en kugle, giv dem en ekstra liv.,, hvis du har brug for hjælp med disse begreber, så tjek mit fly kæmper kampe på tuts +.,,, konklusion, hvis du har fulgt denne serie, så skal du nu have en fuldt funktionsdygtigt spil svarende til den oprindelige space lnvaders.uddybe det og gøre det til dit eget.jeg håber, du fandt det nyttigt, og resten har lært nogle nye teknikker.tak for at læse.

Final product image



Previous:
Next Page: