Lag en Space Invaders spillet i Corona: Prosjekt Setup

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
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

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.

9. Krev Komponist

Før vi kan bruke Komponist modulen, må vi først trenger det. Legg til følgende main.lua.
Lokal komponist = require ("komponist")
10. Laste Start Scene

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.
Composer.gotoScene ("start")
11. Start Scene

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.
Lokal komponist = require ("komponist") lokale scenen = composer.newScene () avkastning scene

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.


11. Lokale variabler

Følgende er de lokale variabler vi trenger for starten scene
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

Det er viktig å forstå at lokale variabler i hoved blings bare bli kalt en gang,
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.

Dette er viktig å huske på hvis du vil at lokale variabler å bli klargjort på nytt når
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.

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.

12. Storyboard Hendelser

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
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

Legg inn følgende kode til start.lua
funksjon scene: lage (hendelse) lokal gruppe = self.view startknappen = display.newImage ("new_game_btn .png ", display.contentCenterX, display.contentCenterY + 100) gruppe: sett (startknappen) end

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

Trinn 2:. scene: showet

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.
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

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

Trinn 3:. Scene: skjule

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
funksjon scene. hide (hendelse) lokal fase = event.phase if (fase == "vil") da startknappen: removeEventListener ("tap" , startGame) Sluttslutt
16. Start spillet

startGame funksjonen kalles når brukeren kraner startknappen. I denne funksjonen påberope vi gotoScene komponisten metode, som vil ta oss til gamelevel scenen.
Fungere startGame () composer.gotoScene ("gamelevel") end
17. Spill nivå Scene

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.
Lokal komponist = require ("komponist") lokale scenen = composer.newScene () avkastning scene
18. Legg Scene Lyttere

Vi må legge til scene lyttere for å opprette, vise og skjule metoder. Legg til følgende kode i start.lua
scene. AddEventListener ("skape", scene) scenen: addEventListener ("show", scene) scenen: addEventListener ("skjule", scene)
19. Test Progress

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.

Konklusjon

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.