Aceasta este a doua tranșă în tutorialul nostru pentru jocul Pinball de la Corona SDK. În tutorialul de astăzi, vom adăuga la interfața noastră și apoi vom codifica interacțiunea jocului. Citește mai departe!
Asigurați-vă că verificați partea 1 a seriei pentru a înțelege pe deplin și pentru a vă pregăti pentru acest tutorial.
Cand start butonul este atins, vizualizarea titlului este completat și eliminat, dezvăluind vizualizarea jocului. Există multe părți implicate în această viziune, așa că le vom împărți în următorii pași.
funcția showGameView: atingeți (e) transition.to (titleView, time = 300, x = -titleView.height, onComplete = function () startButtonListeners ('rmv') display.remove (titleView) titleView =
Aici plasăm peretele stâng, amintiți-vă că a fost împărțit în părți pentru a aplica fizica mai târziu.
-- Piesele părții stângă l1 = display.newImage ('l1.png') l2 = display.newImage ('l2.png', 0, 214) l3 = display.newImage ('l3.png', 0, 273) .newImage ('l4.png', 0, 387)
Acest cod plasează peretele drept utilizând aceeași metodă.
-- Părți din perete dreapta r1 = display.newImage ('r1.png', 238, 0) r2 = display.newImage ('r2.png', 274, 214) r3 = display.newImage ) r4 = display.newImage ('r4.png', 195, 387)
Adăugați mingea și HitLines cu următorul cod:
ball = display.newImage ('ball.png', display.contentWidth * 0.5, 0) hitLine1 = display.newImage ('hitLine.png', 70, 28) hitLine2 = 28)
Obiectivele sunt adăugate folosind următoarele linii:
-- HitBall3 = display.newImage ('hitBall.png', 187, 236) hitBall2 = display.newImage ('hitBall.png', 130, 236) hitBall1.name = 'hBall' hitBall2.name = 'hBall' hitBall3.name = 'hBall'
Apoi adăugăm padelele și le dăm un nume care să le folosească mai târziu.
pLeft = display.newImage ('paddleL.png', 74, 425) pRight = display.newImage ('paddleR.png', 183, 425) pLeft.name = 'leftPaddle' pRight.name =
Aceste butoane vor controla padelele, adăugându-le folosind acest cod:
lBtn = display.newImage ('lBtn.png', 20, 425) rBtn = display.newImage ('rBtn.png', 260, 425)
În cele din urmă, adăugăm câmpul de text pentru scoruri.
-- Scor TextField scor = display.newText ('0', 2, 0, 'Marker Felt', 14) scor: setTextColor (255, 206, 0)
Probabil vă întrebați de ce am adăugat pereții în părți. Deoarece facem coliziuni perfecte pixel pe ele, nu putem folosi doar addBody (deoarece aceasta va adăuga și o casetă care acoperă și canalul alfa), în schimb folosim formă parametru pentru a defini un poligon pentru imagine.
De ce nu un singur poligon?
Parametrul de formă acceptă numai convex forme și un maxim de 8 laturi, peretele nostru nu este nici unul, așa că l-am împărțit în bucăți.
-- Partea stângă a părților fizice.addBody (l1, 'static', shape = -40, -107, -11, -107, 40, 70, 3, 106, -41, 106 fizics.addBody "static", shape = -23, -30, 22, -30, 22, 8, 6, 29, -23, 29) physics.addBody (13, 'static' , -56, 14, -56, 14, 56, -14, 56)) physics.addBody (14, 'static', shape = -62, -46, -33, - 10, -107, 39, -107, 40, 106, -5, 106, -41, 70 - Părțile drepte ale părții fizice.addBody (r1, ) physics.addBody (r2, 'static', shape = -22, -30, 22, -30, 22, 29, -6, 29, -23, 9 static ', shape = -14, -56, 14, -56, 14, 56, -14, 56) fizics.addBody (r4, -46, 61, 45, -62, 45)
Metode similare sunt utilizate cu celelalte forme, cu excepția cercurilor care utilizează rază parametru.
fizice.addBody (minge, 'dinamic', radius = 8, bounce = 0.4) fizics.addBody (hitLine1, 'static', shape = -20, -42, -15, -49, -6, - 46, 18, 39, 15, 44, 5, 44,) fizics.addBody (hitLine2, 'static', shape = -20, -42, -15, -49, -6, -46,18 , 39, 15, 44, 5, 44,) fizics.addBody (hitBall1, 'static', radius = 15) physics.addBody (hitBall2, 'static', radius = hitBall3, 'static', radius = 15) fizics.addBody (pRight, 'static', shape = 33, 11, 27, -12, 32, 1) ', forma = -33, 1, -28, -12, 32, 11)
O linie simplă este adăugată în partea de sus a ecranului ca un perete pentru a sări mingea.
-- Top Wall local topWall = display.newLine (display.contentWidth * 0.5, -1, display.contentWidth * 2, -1) fizice.addBody (topWall, 'static')
Această funcție adaugă ascultătorii necesari pentru a porni logica jocului.
('touch', movePaddle) rBtn: addEventListener ('touch', movePaddle) minge: addEventListener ('collision', onCollision) Runtime: addEventListener (' ('touch', movePaddle) rBtn: removeEventListener ('touch', movePaddle) minge: removeEventListener ('collision', onCollision) Runtime: endEventListener
Butoanele de pe ecran vor declanșa rotirea paletelor. Acest cod se ocupă de acest lucru.
funcția movePaddle (e) dacă (e.phase == 'a început' și e.target.name == 'stânga'), apoi pLeft.rotation = -40 elseif (e.phase == 'started' și e.target.name == 'dreapta'), apoi pRight.ro = 40 sfarsit
Rotirea va reveni la starea inițială atunci când butonul nu mai este apăsat.
dacă (e.phase == 'terminat'), atunci pLeft.ro = 0 pRight.ro = 0 sfârșitul final
Mingea va fi împușcată când apare o coliziune cu paleta, dar numai dacă rotirea paletei este activă. Acest lucru evită împușcarea mingii atunci când butoanele nu sunt apăsate.
(e.phase == 'started' și e.other.name == 'leftPaddle' și e.other.rotation == -40) apoi minge: applyLinearImpulse (0.05, 0.05, minge .y, ball.y) elseif (e.phase == 'a început' și e.other.name == 'rightPaddle' și e.other.rotation == 40) apoi minge: applyLinearImpulse (0.05, 0.05, ball.y , ball.y) sfârșit
Scorul va crește după ce apare o coliziune cu orice lovitură.
dacă (e.phase == 'terminat' și e.other.name == 'hBall'), apoi scorul.text = tostring (tonumber (score.text) + 100) scorul: setReferencePoint (display.TopLeftReferencePoint) score.x = 2 audio.play (clopot) sfârșitul final
Acest cod verifică dacă mingea cade între spațiul dintre palete și resetează mingea dacă este adevărată.
function update () - Verificati daca bila loveste partea de jos daca (ball.y> display.contentHeight) apoi ball.y = 0 audio.play (buzz) end end
Pentru a începe inițial jocul, Principal funcția trebuie să fie numită. Cu codul de mai sus, vom face asta aici:
Principal()
Fișierul Default.png este o imagine care va fi afișată chiar când porniți aplicația în timp ce iOS încarcă datele de bază pentru a afișa ecranul principal. Adăugați această imagine în folderul sursă al proiectului, acesta va fi adăugat automat de către compilatorul Corona.
Folosind grafica pe care ați creat-o înainte, puteți crea acum o pictogramă frumoasă și bună. Dimensiunea pictogramei pentru pictograma non-retina iPhone este de 57x57px, dar versiunea retinei este 114x114px, iar magazinul iTunes necesită o versiune de 512x512px. Vă sugerăm să creați prima versiune 512x512 și apoi să scalați pentru alte dimensiuni. Pictograma nu are nevoie să aibă colțurile rotunjite sau strălucirea transparentă, iTunes și iPhone-ul vor face asta pentru tine.
E timpul să rulați testul final. Deschideți Simulatorul Corona, navigați în dosarul proiectului, apoi faceți clic pe Deschidere. Dacă totul funcționează așa cum era de așteptat, sunteți gata pentru ultimul pas!
În simulatorul Corona, du-te la Fișier> Construiți și selectați dispozitivul țintă. Completați datele solicitate și faceți clic pe construi. Așteptați câteva secunde și aplicația dvs. va fi gata pentru testarea dispozitivului și / sau trimiterea pentru distribuire!
Experimentați cu rezultatul final și încercați să faceți versiunea personalizată a jocului!
Sper că ți-a plăcut această serie de tutori și ți-a dat de ajutor. Mulțumesc că ați citit!