Î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.
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.
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.
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.
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.
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)
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
.
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 ())
Î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"
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.
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.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.
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, createScene
, enterScene
, și exitScene
.
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.
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.
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
.
incepe jocul
funcția este simplă. Are sarcina de tip storyboard gamelevel scenă.
funcția startGame () storyboard.gotoScene ("gamelevel") sfârșitul
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"
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
Î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.
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.