Creați un joc de combatere a avioanelor în Corona Interfață

Ce veți crea

Introducere

În această serie scurtă, vă voi arăta cum să creați un joc de luptă avion care amintește de vechiul joc arcadă din 1942. De-a lungul drumului, veți afla despre funcționalitatea lui Corona, timeri, mutarea unui personaj și un pic de trigonometrie.

Grafica utilizată în acest tutorial a fost creată de Ari Feldman și furnizată în baza Licenței Publice Comune, ceea ce înseamnă că sunt gratuite. Asigurați-vă că verificați SpriteLib-ul lui Ari Feldman. Să începem.

1. Proiect nou

Deschide Simulatorul Corona, faceți clic pe Proiect nou, și configurați proiectul după cum se arată mai jos. Selectați o locație pentru a salva proiectul și faceți clic pe O.K. Acest lucru va crea un dosar cu un număr de pictograme și trei fișiere care sunt importante pentru noi, main.lua, config.lua, și build.settings. Vom analiza fiecare fișier în următorii pași.

2. Build.Settings

build.settings fișierul este responsabil pentru construirea proprietăților timpului proiectului. Deschideți acest fișier, eliminați conținutul acestuia și completați-l cu următorul fragment de cod.


setările = orientation = default = "portrait", suportate = "portrait",,

În build.settings, setăm orientarea implicită și restricționăm aplicația să suporte doar orientarea portretului. Puteți afla ce alte setări puteți include build.settings prin explorarea documentației Corona.

3. Config.lua

config.lua fișierul se ocupă de configurația aplicației. Așa cum am făcut-o build.settings, deschideți acest fișier, eliminați conținutul acestuia și adăugați următorul cod.


aplicație = content = width = 768, height = 1024, scale = "letterbox", fps = 30,

Aceasta stabilește lățimea și înălțimea implicită a ecranului, utilizează letterbox pentru a scala imaginile și pentru a seta cadrele pe secundă 30.

Puteți afla ce alte proprietăți puteți seta config.lua prin verificarea documentației Corona.

4. Main.lua

main.lua fișierul este fișierul pe care se încarcă prima aplicație și îl utilizează pentru a bootstrap aplicația. Vom folosi main.lua pentru a seta câteva setări implicite pentru aplicație și pentru storyboard pentru a încărca primul ecran.

Dacă nu sunteți familiarizat cu modulul Storyboard de la Corona, vă recomandăm să citiți rapid Documentația. Pe scurt, Storyboard este soluția încorporată pentru crearea și gestionarea scenelor ("ecrane") din Corona. Această bibliotecă oferă dezvoltatorilor o modalitate ușoară de a crea și de a trece între scenele individuale.

5. Ascundeți bara de stare

Nu vrem ca bara de stare să apară în aplicația noastră. Adăugați următorul fragment de cod în main.lua pentru a ascunde bara de stare.


display.setStatusBar (display.HiddenStatusBar)

6. Setați puncte de ancorare implicite

Pentru a seta ancora implicită (puncte de înregistrare), adăugați următoarele main.lua.

display.setDefault ("anchorX", 0) display.setDefault ("anchorY", 0)

anchorX și anchorY proprietățile specifică unde doriți să fie punctul de înregistrare al obiectelor de afișare. Rețineți că valorile variază de la 0.0 la 1.0. De exemplu, dacă doriți ca punctul de înregistrare să fie centrul obiectului de afișare, atunci ar trebui să setați ambele proprietăți 0.5.

7. Generator aleatoare de semințe

Jocul nostru va folosi Lua math.random pentru a genera numere aleatorii. Pentru a vă asigura că numerele sunt cu adevărat aleatorii de fiecare dată când aplicația rulează, trebuie să furnizați o valoare a semințelor. Dacă nu furnizați o valoare de semințe, aplicația va genera aceeași dată aleatorie.

O valoare bună a semințelor este Lua os.time deoarece aceasta va fi diferită de fiecare dată când aplicația este rulată. Adăugați următorul fragment de cod în main.lua.

math.randomseed (os.time ()) 

8. Solicitați Storyboard

Înainte de a putea folosi modulul Storyboard, trebuie mai întâi să-l solicităm. Adăugați următoarele la main.lua.

scriptura locală = necesită "storyboard"

9. Încărcarea ecranului de pornire

Introduceți următorul fragment de cod sub linia în care ați solicitat modulul Storyboard.

storyboard.gotoScene ("începe")

Aceasta va face aplicația să meargă pe ecranul numit start, care este, de asemenea, un dosar Lua, start.lua. Nu este necesar să adăugați extensia de fișier atunci când sunați gotoScene funcţie.

10. Ecran de pornire

Creați un nou fișier Lua numit start.lua în directorul principal al proiectului. Acesta va fi un fișier storyboard, ceea ce înseamnă că trebuie să solicităm modulul Storyboard și să creăm o scenă de storyboard. Adăugați următorul fragment la start.lua.

scriptura locală = necesită ("storyboard") scenă local = storyboard.newScene ()
Apelul la newScene mărci start.lua parte a storyboard-ului aplicației. Aceasta înseamnă că devine un ecran în cadrul jocului, pe care îl putem numi metode storyboard.

11. Variabilele locale

Avem nevoie doar de o variabilă locală, butonul de start, în bucata principală de start.lua. Această variabilă locală este utilizată pentru a face referire la butonul de pornire în această scenă.

butonul de pornire local 

Este important să înțelegeți că variabilele locale din piesa principală sunt numite doar o singură dată când scena este încărcată pentru prima dată. Când navigați prin tabloul de bord, de exemplu, invocând metode cum ar fi gotoScence, variabilele locale vor fi deja inițializate.

Acest lucru este important de reținut dacă doriți ca variabilele locale să fie reinitializate atunci când navigați înapoi către o anumită scenă. Cel mai simplu mod de a face acest lucru este să eliminați scena din tabloul de bord apelând removeScence metodă. Data viitoare când navigați la acea scenă, va fi reîncărcată automat. Aceasta este abordarea pe care o vom lua în acest tutorial.

12. Evenimente Storyboard

Dacă ați avut timp să citiți Documentația pe storyboards la care am legat mai devreme, ați observat că documentația include un șablon care conține toate eventualele event storyboard-uri. Comentariile sunt foarte utile, deoarece indică evenimentele care pot influența inițierea activelor, cronometrele etc..

Șablonul poate părea puțin copleșitor la început. Cu toate acestea, pentru acest tutorial, suntem interesați doar de trei evenimente, createSceneenterScene, și exitScene.

13. Creați scenă

Adăugați următoarele în fragmentul la start.lua.

(0, 0, display.contentWidth, display.contentHeight) fundal: setFillColor (0, .39, .75) grup: inserați (fundal) local bigplane = display.newImage ("bigplane.png", 0,0) grup: introduceți (bigplane) startbutton = display.newImage ("startbutton.png", 264.670)

Această metodă se numește atunci când vizualizarea scenei nu există încă. Aici trebuie să inițializați obiectele de afișare și să le adăugați la scenă. grup este indicată variabila self.view, care este un GroupObject pentru întreaga scenă.

Apoi, tragem un dreptunghi pentru fundal. lui Corona Afişa obiect vine cu unele metode de desen, cum ar fi newCircle, linie nouă, și, așa cum se arată în fragmentul de mai sus, newRect. De asemenea, invocăm setFillColor pentru a da dreptunghiului o culoare albastră. Parametrii pe care îi transmitem sunt procente.

Apoi inserăm fundal în grup. Este important să inserați obiecte de afișare în grupul de vizualizări pentru a vă asigura că sunt șterse atunci când vizualizarea principală este eliminată. În cele din urmă, creați butonul de pornire și adăugați-l și la grup. afişa obiect are imagine noua , care ia ca parametri calea către imagine și X și y valorile pentru poziția imaginii pe ecran.

14. Introduceți scenă

enterScene metoda este chemată imediat după ce scena sa mutat pe ecran. Aici puteți adăuga ascultătorii evenimentului, începeți cronometrele, încărcați sunetul etc. Adaugă următorul fragment sub codul pe care l-ați adăugat în pasul anterior.


funcția scena: enterScene (eveniment) startbutton: addEventListener ("atingeți", startGame) sfârșit

În enterScene, adăugăm un ascultător al evenimentului butonul de start, care va apela incepe jocul atunci când utilizatorii pun pe butonul de pornire.

15. Ieșiți din scenă

exitScene metoda este apelată atunci când scena este pe cale să se deplaseze în afara ecranului. Aici vă doriți Anula indiferent ce ați înființat în enterScene , cum ar fi eliminarea ascultătorilor de evenimente, oprirea temporizării, descărcarea de audio, etc. Adăugați următorul fragment sub codul pe care l-ați adăugat în etapa anterioară.

scena funcției: exitScene (eveniment) startbutton: removeEventListener ("tap", startGame) sfârșit

Tot ce facem în exitScene metoda elimină ascultătorul evenimentului pe care l-am adăugat la butonul de start.

16. Începeți jocul

incepe jocul funcția este simplă. Are sarcina de tip storyboard gamelevel scenă.

funcția startGame () storyboard.gotoScene ("gamelevel") sfârșitul

17. Adăugarea ascultătorilor la scenă

După adăugarea funcției createScene, enterScene, și exitScene metode, trebuie să înregistram scena pentru a asculta aceste evenimente. Introduceți următorul fragment de cod pentru a face acest lucru.

scena: addEventListener ("createScene", scenă) scena: addEventListener ("enterScene", scenă) scena: addEventListener ("exitScene"

18. Întoarceți Scena

Ultimul lucru pe care trebuie să vă asigurați că îl faceți într-un scenariu este reluarea scenei, deoarece este un modul.

întoarceți scena

19. Adăugarea scenei GameLevel

Înainte de a ne putea testa progresul, trebuie să adăugăm gamelevel scenă. Creați un nou fișier Lua în directorul principal al proiectului și denumiți-l gamelevel.lua. Adăugați următorul fragment de cod în fișierul pe care tocmai l-ați creat.

scriptura locală = necesită ("storyboard") scena locală = storyboard.newScene () scena de întoarcere

După cum am văzut mai devreme, solicităm mai întâi modulul storyboard, să creați o scenă nouă și să reveniți la scenă. gamelevel scena este scena în care vom implementa gameplay-ul jocului.

Concluzie

Aceasta aduce la prima parte prima parte a acestei serii. În următoarea parte a acestei serii, vom începe implementarea gameplay-ului jocului. Vă mulțumim pentru lectură și vă voi vedea acolo.

Cod