Crea un gioco Bubble Popping - Aggiunta di interazione

Questa è la seconda parte del tutorial del gioco Corona Popping Bubble SDK. Nel tutorial di oggi, aggiungeremo alla nostra interfaccia codificando l'interazione del gioco. Continuare a leggere!


Disponibile anche in questa serie:

  1. Crea un gioco Bubble Popping - Creazione interfaccia
  2. Crea un gioco Bubble Popping - Aggiunta di interazione

Da dove siamo partiti ...

Assicurati di controllare la parte 1 della serie per comprendere appieno e preparare questo tutorial.


Passaggio 1: avviare i pulsanti di ascolto

Questa funzione aggiunge gli ascoltatori necessari al TitleView pulsanti.

 function startButtonListeners (action) if (action == 'add') then playBtn: addEventListener ('tap', showGameView) creditsBtn: addEventListener ('tap', showCredits) else playBtn: removeEventListener ('tap', showGameView) creditsBtn: removeEventListener ( 'tocca', mostraCrediti) fine

Passaggio 2: Mostra crediti

La schermata dei crediti viene visualizzata quando l'utente tocca il pulsante about, a rubinetto l'ascoltatore viene aggiunto alla vista dei crediti per rimuoverlo.

 function showCredits: tap (e) playBtn.isVisible = false creditsBtn.isVisible = false creditsView = display.newImage ('credits.png', 0, display.contentHeight) lastY = titleBg.y transition.to (titleBg, time = 300 , y = (display.contentHeight * 0.5) - (titleBg.height + 30)) transition.to (creditsView, time = 300, y = (display.contentHeight * 0.5) + 35, onComplete = function () creditsView: addEventListener ('tap', hideCredits) end) end

Passaggio 3: Nascondi crediti

Quando viene toccato lo schermo dei crediti, verrà rimosso dal palco e rimosso.

 function hideCredits: tap (e) transition.to (creditsView, time = 300, y = display.contentHeight + 25, onComplete = function () creditsBtn.isVisible = true playBtn.isVisible = true creditsView: removeEventListener ('tap', hideCredits display.remove (creditsView) creditsView = nil end) transition.to (titleBg, time = 300, y = lastY); fine

Passaggio 4: Mostra vista gioco

Quando il Inizio Tocca il pulsante, la vista del titolo viene interpolata e rimossa rivelando la vista di gioco. Ci sono molte parti coinvolte in questa visualizzazione, quindi le suddivideremo nei passaggi successivi.

 function showGameView: tap (e) transition.to (titleView, time = 300, x = -titleView.height, onComplete = function () startButtonListeners ('rmv') display.remove (titleView) titleView = nil end)

Passaggio 5: muri

Successivamente aggiungiamo i muri al palco. Vengono creati utilizzando l'API di disegno.

 -- Walls left = display.newLine (0, 240, 0, 720) right = display.newLine (320, 240, 320, 720) top = display.newLine (160, 0, 480, 0) bottom = display.newLine (160 , 480, 480, 480)

Passaggio 6: bolle

Questa parte crea cinque bolle sullo schermo in una posizione casuale.

 bubbles = display.newGroup () per i = 1, 5 fa locale rx = 21 + math.floor (math.random () * (display.contentWidth - 42)) local ry = 21 + math.floor (math.random ( ) * (display.contentHeight - 42)) local b = display.newImage ('bubble.png', rx, ry) b.name = 'bubble'

Step 7: Bubble Physics

Qui aggiungiamo fisica alla nostra nuova bolla.

 -- Bubble Physics physics.addBody (b, 'dynamic', radius = 21, bounce = 1) b: setLinearVelocity (100, 100) bubbles: insert (b) end

Step 8: Fisica della parete

E fare lo stesso con le nostre mura.

 -- Walls Physics.addBody (left, 'static') physics.addBody (right, 'static') physics.addBody (top, 'static') physics.addBody (in basso, 'static')

Passaggio 9: campi di testo

Ora aggiungiamo il livello, i fumetti e i campi di testo richiesti.

 -- Level TextField level = display.newImage ('level.png', 2, 0) levelN = display.newText ('1', 54, 5, native.systemFont, 15) levelN: setTextColor (255, 255, 255) - Popped TextField popped = display.newImage ('popped.png', 126, 0) poppedN = display.newText ('0', 187, 5, native.systemFont, 15) poppedN: setTextColor (255, 255, 255) - Required TextField required = display.newImage ('required.png', 231, 0) requiredN = display.newText ('4', 306, 5, native.systemFont, 15) requiredN: setTextColor (255, 255, 255) punti elenco = display.newGroup () fine

Passaggio 10: ascoltatori di giochi

Questa funzione aggiunge gli ascoltatori necessari per avviare la logica di gioco.

 function gameListeners (action) if (action == 'add') then bg: addEventListener ('tap', createBullets) else bg: removeEventListener ('tap', createBullets) Runtime: removeEventListener ('enterFrame', update) end end

Passaggio 11: creare punti elenco

Questo codice viene eseguito quando viene toccato lo sfondo.

Per prima cosa creiamo la grafica del proiettile.

 function createBullets (e) per i = 1, 4 fa local bullet = display.newImage ('bullet.png', e.x, e.y)

Passaggio 12: Imposta direzione

Poi gli diamo una direzione impostando la velocità lineare.

 -- Imposta direzione se (i == 1) quindi bullet.x = bullet.x - 8 physics.addBody (bullet, 'kinematic', radius = 7) bullet: setLinearVelocity (-150, 0) end --left if ( i == 2) quindi bullet.x = bullet.x + 8 physics.addBody (bullet, 'kinematic', radius = 7) bullet: setLinearVelocity (150, 0) end --right if (i == 3) quindi bullet.y = bullet.y - 8 physics.addBody (bullet, 'kinematic', radius = 7) bullet: setLinearVelocity (0, -150) end --up if (i == 4) then bullet.y = bullet.y + 8 physics.addBody (bullet, 'kinematic', radius = 7) bullet: setLinearVelocity (0, 150) end --down bullet: addEventListener ('collision', onCollision) bullet: insert (bullet) bg: removeEventListener ('tap', createBullets) end Runtime: addEventListener ('enterFrame', update) end

Step 13: Collisioni

Le collisioni vengono gestite dalla funzione successiva. Viene riprodotto un suono, il punteggio aumenta e rimuove la bolla dello schermo.

 funzione onCollision (e) if (e.other.name == 'bubble') quindi audio.play (pop) display.remove (e.other) poppedN.text = tostring (tonumber (poppedN.text) + 1) end end

Passaggio 14: rimuovere i proiettili fuori scena

Questo codice rimuoverà qualsiasi proiettile che non è visibile.

 aggiornamento della funzione (e) - Verifica la presenza di proiettili fuori campo per i = 1, bullets.numChildren do if (proiettili [i] ~ = nil) poi se (punti [i] .x < 0 or bullets[i].x > 320 o proiettili [i] .y < 0 or bullets[i].y > 480) quindi display.remove (proiettili [i]) end end end

Step 15: Livello completato

Qui controlliamo se le bolle scoppiettate hanno raggiunto la quantità richiesta e chiamiamo a vincere avviso se è vero.

 -- Controllare se sono state scattate bolle richieste se (bullets.numChildren == 0 e tonumber (poppedN.text)> = tonumber (requiredN.text)) quindi alert ('win') elseif (bullets.numChildren == 0 e tonumber (poppedN. testo) < tonumber(requiredN.text)) then alert('lose') end end

Passaggio 16: avviso

La funzione di avviso visualizza un messaggio in base al tipo di avviso chiamato (livello completato o non riuscito).

 function alert (action) gameListeners ('rmv') if (action == 'win') then local alertView = display.newImage ('won.png', 80, display.contentHeight * 0.5 - 41) transition.from (alertView, time = 300, y = -82, delay = 500) else alertView = display.newImage ('lost.png', 80, display.contentHeight * 0.5 - 41) transition.from (alertView, time = 300, y = -82, delay = 500) end end

Passaggio 17: chiama la funzione principale

Per iniziare il gioco, il Principale la funzione deve essere chiamata. Con il codice sopra riportato, lo faremo qui:

 Principale()

Passaggio 18: schermata di caricamento

Il file Default.png è un'immagine che verrà visualizzata quando si avvia l'applicazione mentre iOS carica i dati di base per mostrare la schermata principale. Aggiungi questa immagine alla cartella sorgente del progetto, verrà automaticamente aggiunta dal complino Corona.


Step 19: Icon

Usando la grafica che hai creato prima ora puoi creare un'icona carina e di bell'aspetto. La dimensione dell'icona per l'icona dell'iPhone non retina è 57x57px, ma la versione retina è 114x114px e lo store iTunes richiede una versione 512x512px. Suggerisco di creare prima la versione 512x512 e poi ridimensionarla per le altre dimensioni.

Non è necessario avere gli angoli arrotondati o il bagliore trasparente, iTunes e l'iPhone lo faranno per te.


Passaggio 20: test in simulatore

È tempo di fare il test finale. Apri il simulatore Corona, vai alla cartella del progetto, quindi fai clic su apri. Se tutto funziona come previsto, sei pronto per il passaggio finale!


Step 21: Build

Nel Corona Simulator vai a File> Crea e seleziona il tuo dispositivo di destinazione. Compila i dati richiesti e clicca costruire. Attendi qualche secondo e la tua app sarà pronta per il test del dispositivo e / o l'invio per la distribuzione!


Conclusione

Sperimenta il risultato finale e prova a creare la tua versione personalizzata del gioco!

Spero ti sia piaciuta questa serie di tutorial e la trovi utile. Grazie per aver letto!