Create en Space Invaders spillet i Corona: Prosjekt Setup
42
Del
9
Del
Dette Cyber mandag Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av
Dette innlegget er en del av en serie som heter Opprett en Space Invaders spillet i Corona.Create et Space Invaders spillet i Corona. Implementering GameplayWhat du skal lage
I denne tredelte serien, Jeg skal vise deg hvordan du kan lage et spill inspirert av den populære sytti spill, Space Invaders. Underveis vil du lære om Corona scene administrasjonsfunksjonalitet, tidtakere, flytte et tegn, den innebygde fysikkmotor, og hvordan du bruker moduler for å etterligne klasser i Lua programmeringsspråk.
1. Nytt prosjekt
Åpne Corona Simulator, klikker du Nytt prosjekt, og konfigurere prosjektet som vist nedenfor.
Velg en plassering for å lagre prosjektet og klikk på OK. Dette vil opprette en mappe med et antall ikoner og tre filer som er viktige for oss, main.lua, config.lua, og build.settings.
Vi vil ta en titt på hver fil i de neste trinnene.
2. Bygg Innstillinger
build.settings filen er ansvarlig for oppbygging tids egenskapene til prosjektet.
Åpne fil, fjerne innholdet, og fylle den med følgende konfigurasjon.
innstillinger = {orientering = {default = "portrett", støttet = {"portrett"},}}
I build .settings, setter vi standard orientering og begrenser anvendelsen
å bare støtte et stående format. Du kan finne ut hvilke andre innstillinger du kan inkludere i
build.settings ved å utforske dokumentasjonen Corona.
3. Programkonfigurasjon
config.lua filen håndterer konfigurasjonen for programmet. Som vi gjorde med build.settings, etter åpne denne filen, fjerne innholdet, og legge til følgende konfigurasjon.
Søknad = {content = {width = 768, height = 1024, skala = "letterbox" , fps = 30}}
Dette setter standard bredde og høyde på skjermen, bruker letterbox å skalere bildene, etter og setter bildefrekvens til 30. Besøk Corona dokumentasjonen for å lære mer om de andre egenskapene du kan sette i config.lua.
4. Entry Point
main.lua filen er den filen som programmet laster først og bruker til bootstrap søknaden. Vi skal bruke main.lua å sette noen standardinnstillingene for programmet, og bruk Komponist biblioteket til å laste det første skjermbildet.
Hvis du ikke er kjent med Corona Komponist bibliotek, så jeg anbefaler å gi
dokumentasjon en rask lese. Kort sagt, er Komponist den innebygde løsningen på scene (skjerm) etablering og styring i Corona. Biblioteket gir utviklere med en enkel måte å opprette og overgangen mellom enkeltscener.
Den nyere Komponist modulen erstatter eldre og nå frarådet Storyboard modul. En migrasjon guide er tilgjengelig for å hjelpe konvertere dine gamle prosjekter over til å bruke Komponist.
5. Skjule statuslinjen
Vi ønsker ikke statuslinjen viser i søknaden vår. Legg inn følgende kode til main.lua å skjule statuslinjen.
Display.setStatusBar (display.HiddenStatusBar)
6. Bruk standard festepunkter
Hvis du vil angi standard anker eller registreringspunktene legge til følgende kode blokken til main.lua.
Display.setDefault ("anchorX", 0,5) display.setDefault ("anchorY ", 0,5)
anchorX og anchorY egenskaper angi hvor du vil registreringspunktet av visningsobjekter å være. Legg merke til at verdien varierer fra 0.0 til 1.0. For eksempel, hvis du ønsker registreringspunkt for å være øverst til venstre på skjermen objekt, så du hadde satt begge eiendommene til 0,0.
7. Seed Random Generator
Spillet vårt skal bruke Lua er Math.random funksjon for å generere tilfeldige tall. For å være sikker på at tallene er helt tilfeldig hver gang programmet kjøres, må du oppgi en startverdi. Hvis du ikke oppgir en startverdi, vil programmet generere samme tilfeldig hver gang.
En god startverdi er Lua er os.time funksjon siden det vil være forskjellig hver gang
programmet kjøres. Legg inn følgende kode til main.lua.
Math.randomseed (os.time ())
8. Unngå Globals
Når du bruker Corona, og spesielt Lua programmeringsspråk, en måte å ha tilgang til variabler søknad dekkende, er å bruke global variables.The måten du deklarerer en global variabel er ved å la seg nøkkelordet lokale i foran variabeldeklarasjon.
For eksempel, erklærer følgende kode blokken to variabler. Den første er en lokal variabel som bare ville være tilgjengelig i koden blokk det er definert i. Den andre er en global variabel som er tilgjengelig hvor som helst i programmet.
Lokal iamalocalvariable = "lokal" iamaglobalvariable = "global"
Det er generelt ansett dårlig praksis å bruke globale variabler. Den mest utbredte årsaken er å unngå konflikter navngi, det vil si å ha to variable med samme navn. Vi kan løse dette problemet ved å bruke moduler. Opprett en ny Lua-fil, kall den gamedata.lua, og legge til følgende kode i den.
M = {} returnere M
Vi bare lage en tabell og returnere den. For å utnytte dette, vi bruker Lua s krever metoden. Legg til følgende main.lua.
Lokale gameData = require ("gamedata")
Vi kan da legge nøklene til gameData, som vil være den faux globale Når vi ønsker å få tilgang til disse variablene, er alt vi trenger å gjøre bruk krever funksjon for å laste gamedata.lua. Hver gang du installerer et modul med Lua s krever funksjon, det legger modulen til en package.loaded bord. Hvis du laster en modul, er package.loaded tabellen sjekket først for å se om modulen er allerede lastet. Hvis det er, så den bruker bufret modul i stedet for å laste den på nytt. Før vi kan bruke Komponist modulen, må vi først trenger det. Legg til følgende main.lua. Legg inn følgende kode til main.lua. Dette vil gjøre programmet gå til scenen som heter start, som også er en Lua fil, start.lua. Du trenger ikke å legge den filtypen når du ringer gotoScene funksjonen. Opprett en ny Lua fil kalt start.lua i prosjektets hovedkatalog. Dette vil være en komponist-fil, noe som betyr at vi må kreve at Komponist modulen og lage en komponist scene. Legg til følgende tekstutdraget til start.lua. Kallet til newScene gjør start.lua del av komponistens scene hierarki. Dette betyr at det blir en skjerm i spillet, som vi kan kalle komponistens metoder på. Herfra ut, lagt koden til start.lua bør plasseres over avkastningen uttalelse. Følgende er de lokale variabler vi trenger for starten scene Det er viktig å forstå at lokale variabler i hoved blings bare bli kalt en gang, Dette er viktig å huske på hvis du vil at lokale variabler å bli klargjort på nytt når pulsatingText og starFieldGenerator er to tilpassede moduler vi vil skape for å legge klasse-lignende funksjonalitet til prosjektet. Lag to nye filer i prosjekt mappe som heter pulsatingtext.lua og starfieldgenerator.lua. Hvis du har tatt deg tid til å lese dokumentasjon på Komponist, som jeg linket til tidligere, etter at du vil ha lagt merke dokumentasjonen inneholder en mal som inneholder alle mulige Legg inn følgende kode til start.lua Denne metoden kalles når scenen syn ikke finnes ennå. Det er her du skal initialisere visningsobjekter og legge dem til åstedet. Gruppen variable peker til self.view, som er en GroupObject for hele scenen. Vi skaper startknappen ved hjelp av skjerm objektets newImage metode, som tar som parametere banen til bilde og x- og y-verdiene for bildets posisjon på skjermen Komponist scene: showet metoden har to faser. Viljen fasen kalles når scenen er fortsatt off-screen, men er i ferd med å komme på skjermen. Det gjorde fasen kalles når scenen er på skjermen. Det er der du vil legge til koden for å gjøre scenen livne, start timere, legge hendelsen lyttere, spille av lyd, etc. I denne opplæringen er vi bare interessert i gjorde fasen. Vi erklærer en lokal variabel fase, som vi bruker til å sjekke hvilken fase showet metoden er i Siden vi vil være. kommer tilbake til denne scenen senere i spillet, sjekker vi å se om det er en tidligere scene og i så fall, fjern det. Vi legger et trykk lytteren til startknappen som kaller startGame funksjon Komponist scene: hide metoden har også to faser. Viljen fasen kalles når scenen er på skjermen, men er i ferd med å gå off-screen. Her vil du ønsker å stoppe eventuelle tidtakere, fjerner hendelsen lyttere, stoppe lyd, er etc. gjorde fasen kalles når scenen har gått av skjermen. I denne opplæringen, vi er bare interessert i viljen fase hvor fjerne vi springen lytteren fra startknappen startGame funksjonen kalles når brukeren kraner startknappen. I denne funksjonen påberope vi gotoScene komponisten metode, som vil ta oss til gamelevel scenen. Opprett en ny fil med navnet gamelevel.lua og legge til følgende kode i den. Dette bør se kjent. Vi skaper en ny scene og returnere den. Vi må legge til scene lyttere for å opprette, vise og skjule metoder. Legg til følgende kode i start.lua Hvis du teste spillet nå, bør du se en svart skjerm med en knapp du kan trykke på. Trykke på knappen skal ta deg til gamelevel scene, som nå er bare en svart skjerm. Dette bringer denne delen av serien til en avslutning. I neste del, vil vi begynne å implementere spillets gameplay. Takk for lesing og se deg i den andre delen av denne serien.
variabler. Ta en titt på følgende eksempel
gameData.invaderNum = 1 -. Brukes til å holde orden på det nivået vi er ongameData.maxLevels = 3 - Max antall nivåer i spillet vil havegameData.rowsOfInvaders = 4 - - Hvor mange rader med Invaders å opprette
9. Krev Komponist
Lokal komponist = require ("komponist")
10. Laste Start Scene
Composer.gotoScene ("start")
11. Start Scene
Lokal komponist = require ("komponist") lokale scenen = composer.newScene () avkastning scene
11. Lokale variabler
lokale startknappen -. Brukes til å starte spillet lokale pulsatingText = require ("pulsatingtext") - En modul gir et pulserende teksteffekt lokal starFieldGenerator = require ("starfieldgenerator") - En modul som genererer starFieldGenerator lokale starGenerator - En forekomst av starFieldGenerator
når scenen er lastet for første gang. Når du navigerer gjennom komponistens scener, for eksempel ved å påberope metoder som gotoScence, vil de lokale variablene allerede initialisert.
navigering tilbake til en bestemt scene. Den enkleste måten å gjøre dette på er å fjerne scene fra hierarkiet komponist ved å ringe removeScence metoden. Neste gang du navigere til den scenen, vil det automatisk bli lastet inn på nytt. Det er tilnærmingen vi skal ta i denne opplæringen.
12. Storyboard Hendelser
komponist hendelsen. Kommentarene er svært nyttig som de indikerer hvilke hendelser å utnytte for initialisering eiendeler, timere, etc. Vi er interessert i scenen: opprette, scene: show, og scene:. Skjul metoder for denne opplæringen
Trinn 1: scene. opprette
funksjon scene: lage (hendelse) lokal gruppe = self.view startknappen = display.newImage ("new_game_btn .png ", display.contentCenterX, display.contentCenterY + 100) gruppe: sett (startknappen) end
Trinn 2:. scene: showet
Funksjon scene legge inn følgende kode til start.lua. Showet (hendelse) lokal fase = event.phase lokal previousScene = composer.getSceneName ("forrige") if (previousScene ~ = null) så composer.removeScene (previousScene ) end if (fase == "gjorde") da startknappen: addEventListener ("tap", startGame) Sluttslutt
Trinn 3:. Scene: skjule
funksjon scene. hide (hendelse) lokal fase = event.phase if (fase == "vil") da startknappen: removeEventListener ("tap" , startGame) Sluttslutt
16. Start spillet
Fungere startGame () composer.gotoScene ("gamelevel") end
17. Spill nivå Scene
Lokal komponist = require ("komponist") lokale scenen = composer.newScene () avkastning scene
18. Legg Scene Lyttere
scene. AddEventListener ("skape", scene) scenen: addEventListener ("show", scene) scenen: addEventListener ("skjule", scene)
19. Test Progress
Konklusjon