I denne korte serien vil jeg vise deg hvordan du lager et fly kampspill som minner om det gamle 1942 arkadespillet. Underveis lærer du om Coronas storyboard-funksjonalitet, timere, flytte et tegn og litt trigonometri.
Grafikken som ble brukt i denne opplæringen ble opprettet av Ari Feldman og gitt under Common Public License, som betyr at de er fri til bruk. Pass på å sjekke ut Ari Feldmans SpriteLib. La oss komme i gang.
Åpne Corona Simulator, klikk Nytt prosjekt, og konfigurer prosjektet som vist nedenfor. Velg et sted for å lagre prosjektet ditt og klikk 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 tar en titt på hver fil i de neste trinnene.
De build.settings Filen er ansvarlig for prosjektets byggetidseiendommer. Åpne denne filen, fjern innholdet, og fyll den med følgende kodestykke.
settings = orientation = default = "portrait", støttet = "portrait",,
I build.settings, Vi setter standardretningen og begrenser søknaden til bare å støtte en stående orientering. Du kan lære hvilke andre innstillinger du kan inkludere i build.settings ved å utforske Corona-dokumentasjonen.
De config.lua filen håndterer programmets konfigurasjon. Som vi gjorde med build.settings, åpne denne filen, fjern innholdet, og legg til følgende kode.
søknad = content = width = 768, height = 1024, skala = "letterbox", fps = 30,
Dette angir standardbredde og høyde på skjermen, bruker letterbox å skalere bildene, og setter rammer per sekund til 30
.
Du kan lære hvilke andre egenskaper du kan sette inn config.lua ved å sjekke ut Corona-dokumentasjonen.
De main.lua fil er filen som søknaden lastes først og bruker for å starte opp programmet. Vi skal bruke main.lua for å angi noen standardinnstillinger for programmet og Storyboard modul for å laste den første skjermen.
Hvis du ikke er kjent med Corona's Storyboard-modul, anbefaler jeg at du gir dokumentasjonen en rask lesning. Kort sagt, Storyboard er den innebygde løsningen til scene ("skjermer") opprettelse og ledelse i Corona. Dette biblioteket gir utviklere en enkel måte å lage og overgang mellom individuelle scener.
Vi ønsker ikke at statuslinjen skal vises i vår søknad. Legg til følgende kodestykke til main.lua for å skjule statuslinjen.
display.setStatusBar (display.HiddenStatusBar)
For å angi standardanker (registreringspunkter) legger du til følgende i main.lua.
display.setDefault ("anchorX", 0) display.setDefault ("anchorY", 0)
De anchorX
og anchorY
Egenskaper spesifiserer hvor du vil at registreringspunktet for skjermobjektene skal være. Vær oppmerksom på at verdien varierer fra 0.0
til 1.0
. Hvis du for eksempel vil at registreringspunktet skal være sentrum for skjermobjektet, vil du sette begge egenskapene til 0.5
.
Vårt spill vil bruke Lua math.random
funksjon for å generere tilfeldige tall. For å sikre at tallene er virkelig tilfeldig hver gang applikasjonen går, må du oppgi en frøverdi. Hvis du ikke gir en frøverdi, vil applikasjonen generere den samme tilfeldigheten hver gang.
En god frøverdi er Luas os.time
funksjon siden det vil være annerledes hver gang applikasjonen kjøres. Legg til følgende kodestykke til main.lua.
math.randomseed (os.time ())
Før vi kan bruke Storyboard-modulen, må vi først kreve det. Legg til følgende til main.lua.
lokal storyboard = krever "storyboard"
Skriv inn følgende kodestykke under linjen der du krevde Storyboard-modulen.
storyboard.gotoScene ("start")
Dette vil gjøre søknaden gå til skjermen som heter start, som også er en Lua-fil, start.lua. Du trenger ikke å legge til filtypen når du ringer til gotoScene
funksjon.
Opprett en ny Lua-fil som heter start.lua i prosjektets hovedkatalog. Dette blir en storyboard-fil, noe som betyr at vi må kreve Storyboard-modulen og lage en storyboard-scene. Legg til følgende utdrag til start.lua.
lokal storyboard = krever ("storyboard") lokal scene = storyboard.newScene ()Anropet til
newScene
gjør at start.lua en del av søknadens storyboard. Dette betyr at det blir en skjerm i spillet, som vi kan ringe til storyboard-metoder på.Vi trenger bare en lokal variabel, start knapp
, i hoveddelen av start.lua. Denne lokale variabelen brukes til å referere til startknappen i denne scenen.
lokal startknapp
Det er viktig å forstå at lokale variabler i hovedklumpen bare blir kalt en gang, når scenen lastes for første gang. Når du navigerer gjennom storyboardet, for eksempel ved å påberope seg metoder som gotoScence
, De lokale variablene vil allerede bli initialisert.
Dette er viktig å huske om du vil at de lokale variablene skal reinitialiseres når du navigerer tilbake til en bestemt scene. Den enkleste måten å gjøre dette på er å fjerne scenen fra storyboardet ved å ringe removeScence
metode. Neste gang du navigerer til den aktuelle scenen, blir den automatisk lastet opp. Det er den tilnærmingen vi skal ta i denne opplæringen.
Hvis du har tatt deg tid til å lese dokumentasjonen på storyboards jeg koblet til tidligere, har du lagt merke til at dokumentasjonen inneholder en mal som inneholder alle mulige storyboard-hendelser. Kommentarene er svært nyttige da de angir hvilke hendelser som skal utnytte for å initialisere aktiver, timere osv.
Malen kan virke litt overveldende først. Men for denne opplæringen er vi kun interessert i tre hendelser, createScene
, enterScene
, og exitScene
.
Legg til følgende i snippet til start.lua.
funksjonsscene: createScene (event) lokal gruppe = self.view lokal bakgrunn = display.newRect (0, 0, display.contentWidth, display.contentHeight) bakgrunn: setFillColor (0, .39, .75) gruppe: lokal bigplane = display.newImage ("bigplane.png", 0,0) gruppe: sett inn (bigplane) startknapp = display.newImage ("startbutton.png", 264,670) gruppe: sette inn (startknapp) ende
Denne metoden kalles når scenens syn ikke eksisterer ennå. Her skal du initialisere skjermobjektene og legge dem til scenen. De gruppe
variabel peker på self.view
, hvilken er en GroupObject
for hele scenen.
Vi tegner deretter et rektangel for bakgrunnen. Corona Vise
objekt kommer med noen tegne metoder, for eksempel newCircle
, ny linje
, og, som vist i koden ovenfor, newRect
. Vi påberoper oss også setFillColor
å gi rektangelet en blåaktig farge. Parametrene vi passerer er prosenter.
Vi setter deretter inn bakgrunn
inn i gruppen. Det er viktig å sette inn visningsobjekter i visningsgruppen for å sikre at de fjernes når hovedvisningen er fjernet. Endelig opprett startknappen og legg den til i gruppen også. De vise
objektet har newImage
metode som tar parametrene til banen og bildet x
og y
verdier for bildeets posisjon på skjermen.
De enterScene
Metoden kalles umiddelbart etter at scenen har flyttet på skjermen. Her kan du legge til hendelseslyttere, starte timere, laste lyd, etc. Legg til følgende kode nedenfor koden du la til i forrige trinn.
funksjonsscene: enterScene (event) startknapp: addEventListener ("tap", startGame) avslutte
I enterScene
, Vi legger til en hendelseslytter til start knapp
, som vil ringe til start spill
Fungerer når brukerne tapper startknappen.
De exitScene
Metoden kalles når scenen er i ferd med å bevege seg på skjermen. Det er her du vil angre hva du satt opp i enterScene
metode, for eksempel fjerne hendelseslyttere, stoppe timere, laste av lyd osv. Legg til følgende kode nedenfor koden du la til i forrige trinn.
funksjonsscene: exitScene (event) startknapp: removeEventListener ("tap", startGame) avslutte
Alt vi gjør i exitScene
Metoden fjerner hendelseslytteren vi har lagt til i start knapp
.
De start spill
funksjonen er enkel. Den har storyboard lasten gamelevel scene.
funksjon startGame () storyboard.gotoScene ("gamelevel") slutten
Etter å ha lagt til createScene
, enterScene
, og exitScene
metoder, må vi registrere scenen for å lytte etter disse hendelsene. Skriv inn følgende kodestykke for å gjøre dette.
scene: addEventListener ("createScene" scene) scene: addEventListener ("enterScene" scene) scene: addEventListener ("exitScene" scene)
Det siste du må sørge for at du gjør i et storyboard, er å returnere scenen, fordi det er en modul.
retur scene
Før vi kan teste vår fremgang, må vi legge til gamelevel scene. Opprett en ny Lua-fil i prosjektets hovedkatalog og navngi den gamelevel.lua. Legg til følgende kodestykke i filen du nettopp har opprettet.
lokal storyboard = kreve ("storyboard") lokal scene = storyboard.newScene () retur scene
Som vi så tidligere, krever vi først storyboard-modulen, lager en ny scene og returnere scenen. De gamelevel scenen er scenen der vi skal implementere spillets spill.
Dette bringer den første delen av denne serien til slutt. I neste del av denne serien begynner vi å implementere spillets spill. Takk for at du leser, og jeg vil se deg der.