, skabe et fly sporten i corona: gameplay,,,,, 9,,,,,,,,,,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss. denne post er en del af en serie kaldet skabe et fly sporten i corona. skabe et fly sporten i corona: interfacecreate et fly sporten i corona: mere gameplay,,, hvad du vil lave,,, indledningen, i første del af denne serie, lykkedes det os at få starten skærm viser og var i stand til at overgangen til, gamelevel, skærm.i denne forelæsning, fortsætter vi, hvor vi tilbage og begynde at gennemføre de gameplay.,,, 1.lokale variabler, åben, gamelevel. lua, sagen skabte vi i første forelæsning, og der tilføjes følgende under stregen, lokale scene = skitse. newscene(),.,, lokale playerspeedy = 0 lokale playerspeedx = 0 lokale playermovespeed = 7 lokale playerwidth = 60 lokale playerheight = 48 lokale bulletwidth = 8 lokale bulletheight = 19 lokale islandheight = 81 lokale islandwidth = 100 lokale numberofenemystogenerate = 0 lokale numberofenemysgenerated = 0 lokale playerbullets = {} - - har alle de kugler, de spiller brande lokale enemybullets = {}... holde kuglerne fra "alle" fjendtiige fiy lokale øer = {} - - har alle øer lokale planegrid = {}... holder 0 eller 1 (11 af dem for at nettet) lokale enemyplanes = {}... holder all af fjendens fly lokale livesimages = {} - - har alle de "frie" billeder lokale numberoflives = 3 lokale freelifes = {} - - har alle ingame frie liv lokale playerisinvincible = falske lokale gameover = falske lokale numberofticks = 0, - - et antal, der forøges hvert billede af spillet - - en gruppe lokale islandgroup for at holde alle øerne lokale planegroup - en gruppe, der holder alle fly, kugler, osv. de lokale spiller lokale planesoundchannel... soundchannel til flyet, god lokal fireplayerbullettimer lokale generateislandtimer lokale fireenemybulletstimer lokale generatefreelifetimer lokale rectup... "" kontrol med dpad lokale rectdown... "" kontrol med dpad lokale rectleft... "tilbage"kontrol på dpad lokale rectright... den "rigtige" kontrol med dpad, er de fleste af disse er indlysende, men jeg har medtaget yderligere bemærkninger. fra nu af alle kode bør indsættes over linjen, afkast scene,.,,. 2. , createscene, start ved at tilføje den, createscene, funktion, main. lua,. , createscene, funktion kaldes når gerningsstedet er opfattelse ikke eksisterer endnu.vi vil gerne tilføje, at spillet er display objekter i denne funktion.,, funktion scene: createscene (tilfælde) lokal gruppe = self.view ende scene: addeventlistener ("createscene", scene), 3., setupbackground,,, funktion setupbackground () lokal baggrund = opvisning. newrect (0, 0, display.contentwidth, display. contentheight) baggrund: setfillcolor (0,0,1) scene. betragtning: indsæt (baggrund), i, setupbackground, skaber vi en blå baggrund ved hjælp af display - objekt er , newrect metode.det, setfillcolor, metode tager rgb - værdier, som procentsatser.påberåbe sig, setupbackground fungerer, createscene, som vist nedenfor.,,, funktion scene: createscene (tilfælde) lokal gruppe = self.view setupbackground(),, 4. , setupgroups,,, setupgroups, funktion instantiates, islandgroup, og planegroup, grupper og indføjer dem i scene er, mening.den groupobject er en særlig type udstilling objekt, som du kan tilføje andre display objekter.det er vigtigt at tilføje, islandgroup, til den opfattelse, sørge for øerne er under fly.,,, funktion setupgroups() islandgroup = opvisning. newgroup() planegroup = opvisning. newgroup() scene. betragtning: indsæt (islandgroup) scene. betragtning: indsæt (planegroup), kan påberåbe sig, setupgroups fungerer, createscene, som vist nedenfor.,,, funktion scene: createscene (tilfælde) lokal gruppe = self.view setupbackground() setupgroups() ende, 5. , setupdisplay,,, setupdisplay, funktion, trækker en sort firkant i bunden og indstik, dpad og fly, billeder i,,.,,, funktion setupdisplay () lokale temprect = opvisning. newrect (0, display. contentheight-70, display. contentwidth, 124); temprect: setfillcolor (0,0,0); scene. betragtning: indsæt (temprect) lokale logo = opvisning. newimage ("logo. men heller ikke dér er menneskene sikre" display. contentwidth-139, display. contentheight-70); scene. betragtning: indsæt (logo) lokale dpad = opvisning. newimage ("dpad. men heller ikke dér er menneskene sikre", 10, display.contentheight - 70) scene. betragtning: indsæt (dpad), igen påberåbe sig denne funktion i, createscene, som vist nedenfor.,,, funktion scene: createscene (tilfælde) lokal gruppe = self.view setupbackground() setupgroups() setupdisplay() ende, 6. , setupplayer,,, setupplayer, funktion blot tilføjer spiller billede til skærm.displayet formål kommer med to read - only egenskaber, contentwidth, og contentheight, svarende til den oprindelige bredde og højde for indholdet i antal pixels.disse værdier misligholdelse til skærmen, bredde og højde, men måske har andre værdier, hvis man bruger indhold, afskalning, ud. lua,.vi bruger disse egenskaber til at tilpasse aktør i scene.,,, funktion setupplayer() spiller = opvisning. newimage ("spiller. men heller ikke dér er menneskene sikre" (display. contentwidth /2) - (playerwidth /2), (display.contentheight - 70) - playerheight) player.name = "spiller" scene. betragtning: indsæt (aktør), kan påberåbe sig, setupplayer fungerer, createscene,.,, funktion scene: createscene (tilfælde) lokal gruppe = self.view setupbackground() setupgroups() setupdisplay() setupplayer() ende, 7. , setuplivesimages,,, setuplivesimages, funktion indeholder seks liv billeder og holdninger dem øverst til venstre på skærmen.vi skal indsætte disse billeder i, livesimages, tabel, således at vi er i stand til at henvise dem til senere.endelig vil vi sørge for, at kun de tre første billeder er synlige,.,,, funktion setuplivesimages() for i = 1, 6 - lokale templifeimage = opvisning. newimage ("liv. men heller ikke dér er menneskene sikre" 40 * - 20, 10) tabel. indsæt (livesimages, templifeimage) scene. betragtning: indsæt (templifeimage), hvis - jeg er > 3), så templifeimage.isvisible = falske afslutning afslutning,,, setuplivesimages, funktion, også kan bruges i , createscene, funktion.,, funktion scene: createscene (tilfælde) lokal gruppe = self.view setupbackground() setupgroups() setupdisplay() setupplayer() setuplivesimages() ende, 8. , setupdpad,,, setupdpad, funktion fastsættes de fire områder, rectup,, rectdown,,,ctleft, og , rectright,.vi nøje placerer dem på toppen af dpad image, få dem til at være synlige, og sørg for, ishittestable, ejendom, der er rigtigt,.,, hvis du viser genstande, der skal ikke være synlige, du er først ude af stand til at interagere med dem.men ved at fastsætte, ishittestable, ejendom, rigtigt, denne opførsel er tilsidesat.,,, funktion setupdpad() rectup = opvisning. newrect (34 display.contentheight-70, 23) rectup: setfillcolor (1,0,0) rectup.id = "op" rectup.isvisible = falske rectup.ishittestable = sandt. scene. betragtning: indsæt (rectup) rectdown = opvisning. newrect (34 display.contentheight-23, 23,23) rectdown: setfillcolor (1,0,0) rectdown.id = "ned" rectdown.isvisible = falske rectdown.ishittestable = sandt. scene. betragtning: indsæt (rectdown) rectleft = opvisning. newrect (10). contentheight-47,23, 23) rectleft: setfillcolor (1,0,0) rectleft.id = venstre "rectleft.isvisible = falske rectleft.ishittestaog = sandt. scene. betragtning: indsæt (rectleft) rectright = opvisning. newrect (58, display.contentheight-47, 23,23) rectright: setfillcolor (1,0,0) rectright.id = "ret" rectright.isvisible = falske rectright.ishittestable = sandt. scene. betragtning: indsæt (rectright), du har gættet det.denne funktion er også nævnt i createscene,.,, funktion scene: createscene (tilfælde) lokal gruppe = self.view setupbackground() setupgroups() setupdisplay() setupplayer() setuplivesimages() setupdpad() ende, 9. , resetplanegrid,,, resetplanegrid, funktion nulstiller, planegrid, tabel og indstik elleve nuller.det, planegrid, tabel efterligner 11 pletter på x - aksen, hvor et fjendtligt fly kan placeres.det vil give mere mening, når vi begynder at skabe fjendtlige fly.,, funktion resetplanegrid() planegrid = {} for i = 1, 11, skal tabel. indsæt (planegrid, 0), kan påberåbe sig denne funktion i, createscene,.,, funktion scene: createscene (tilfælde) lokal gruppe = self.view setupbackground() setupgroups() setupdisplay() setupplayer() setuplivesimages() setupdpad() resetplanegrid() ende, 10. , enterscene, nu, at alle udviser objekter er på plads, er det tid til at tilføje nye tilfælde lyttere, osv. hvis du husker fra den foregående del af denne forelæsning, enterscene, funktion er et godt sted at sætte disse op.start med at indsætte følgende kode snippet.,,, funktion scene: enterscene (tilfælde) lokal gruppe = self.view ende scene: addeventlistener ("enterscene", scene), 11.at fjerne den tidligere skitse, når vi træder ind i den her scene, er vi nødt til at fjerne den sidste scene.der tilføjes følgende kode til, enterscene, funktion, til at gøre dette.,,, lokale previousscene = skitse. getprevious() skitse. removescene (previousscene), når man træder ind i en ny scene, den sidste scene, du var på kan være opført ved at , getprevious på, tegning, objekt.vi fjerner det helt fra den skitse til, removescene, på, tegning, objekt.,,, 12.hvis publikum til at tilføje dpad rektangler, tilføje følgende kode under kode ind i det foregående trin. denne kode snippet tilføjer røre lyttere til hver af kvadratisk eller rektangulær form, ubearbejdet, påberåbe sig, moveplane, med hver eneste detalje.lad os tage et kig på dette, moveplane, funktion i det næste skridt.,,, rectup: addeventlistener ("kontakt", moveplane) rectdown: addeventlistener ("kontakt", moveplane) rectleft: addeventlistener ("kontakt", moveplane) rectright: addeventlistener ("kontakt", moveplane), 13., moveplane,,, moveplane, funktion er ansvarlig for fastsættelsen af flyene hastighed.vi tjekker, hvis de rører begivenhed er fase svarer til , begyndte, hvilket betyder aktør har rørt ned, men ikke løftet fingeren op.hvis det er sandt, at vi sætter fart og retning, i henhold til hvilke rektangel blev rørt.hvis de rører begivenhed er fase svarer til ophør,, så ved vi spiller har ophævet deres finger, hvilket betyder, at vi sætter fart på, 0,.,, funktion moveplane (tilfælde), hvis event.phase = = "begyndte" hvis (event.target.id = = "op", så playerspeedy = - playermovespeed ende hvis (event.target.id = = "ned"), så playerspeedy = playermovespeed, hvis (event.target.id = = "venstre"), så playerspeedx = - playermovespeed, hvis (event.target.id = = "ret"), så playerspeedx = playermovespeed ende elseif event.phase = = "slut" så playerspeedx = 0 playerspeedy = 0 sidst ende, 14.planesound, lad os tilføje noget til vores spil.der tilføjes følgende kode snippet til , enterscene, funktion.det belastninger og spiller , planesound. mp3.ved fastsættelsen af , løkker, ejendom til - 1, vil lyden loop for evigt.hvis du vil vide mere om lyd i corona, sørg for at se på dokumentation.,,, lokale planesound = lyd. loadstream ("planesound. mp3 -") planesoundchannel = audio. spille (planesound, {loops = - 1}), 15. , enterframe, omstændigheder, er vi også tilføje en runtime begivenhed til at lytte ved navn, enterframe, det vil kalde,, gameloop, funktion.den hyppighed, hvormed, enterframe, sker, afhænger af de billeder pr. sekund (fps) værdi, du sætter ind, ud. lua,.i vores eksempel, vil det være ringede 30 gange pr. sekund.tilføje denne begivenhed til at lytte til, enterscene,.,, runtime: addeventlistener ("enterframe", gameloop), 16. , gameloop, i, gameloop, funktion vi ajourfører den sprite stillinger og udføre enhver anden logik, som skal finde sted hvert billede. , hvis du er interesseret i at læse mere om emnet på spil, løkker, michael james williams skrev en artikel, der forklarer, hvordan en fælles spil loop fungerer.der tilføjes følgende kode snippet.,,, funktion gameloop() moveplayer() ende, 17., moveplayer,,, moveplayer, funktion forvalter flytning af deres fly.vi flytter de fly i henhold til , playerspeedx, og playerspeedy, værdier, som enten skal , 7, eller 0, afhængigt af, om spilleren er rørende på dpad eller ej. henviser til, moveplane, funktion, hvis den er uklar.vi har nogle grænser kontrol, for at sikre, at flyet ikke kan bevæge sig væk fra skærmen.,, funktion moveplayer() spiller. x = spiller. x + playerspeedx spiller. y = spiller. y + playerspeedy hvis (spiller. x < 0, så spiller. x = 0, hvis (spiller. x > display.contentwidth - playerwidth) spiller. x = display.contentwidth - playerwidth, hvis (spiller. y < 0, så spiller. y = 0, hvis (spiller. y > display.contentheight - 70 - playerheight) spiller. y = display.contentheight - 70 - playerheight ende,, hvis du tester kampen nu, du burde være i stand til at styre flyet på skærmen ved hjælp af dpad.,, konklusion, fører den anden lektion i denne serie til en tæt på.i næste trin af denne serie, vil vi fortsætte med gameplay.tak for at læse og se dig der.