Estratto del documento

Solar 2D: piattaforma per lo sviluppo di videogiochi

Solar 2D è una piattaforma per lo sviluppo di videogiochi.

File principali

Coronaicon.png: icona gioco

Main.lua: file principale da editare

Caricare un'immagine

Comando che permette di visualizzare nel dispositivo una determinata immagine. Necessita di tre parametri: ("nome del file", larghezza, altezza). Il nome del file può essere identificato con un percorso se non si trova nella stessa cartella del main. Ogni elemento viene memorizzato all'interno di una variabile; in questo caso l'immagine verrà salvata nella variabile locale background.

local background = display.newImageRect("background.png", 360, 570)

Posizionare lo sfondo

X e Y sono le coordinate del centro dell'immagine. È un comando che calcola automaticamente il centro del display del dispositivo rispetto all'asse X (stessa cosa per Y). Poniamo quindi la X e la Y del background uguali a quelle del display.

background.x = display.contentCenterX
background.y = display.contentCenterY

Caricare palloncino e piattaforma

Determina l'altezza dell'area di lavoro; in questo caso viene tolto qualche pixel in display.contentHeight per alzare leggermente la piattaforma. L'ordine in cui vengono caricate le immagini determina la loro visualizzazione (se metto prima il palloncino e poi il background, quest'ultimo coprirà il palloncino).

local balloon = display.newImageRect("balloon.png", 112, 112)
balloon.x = display.contentCenterX
balloon.y = display.contentCenterY

local platform = display.newImageRect("platform.png", 300, 50)
platform.x = display.contentCenterX
platform.y = display.contentHeight

Aggiungere la fisica

Per aggiungere la fisica si richiama una libreria esterna (physics) tramite il comando require. La libreria deve essere associata ad una variabile, in questo caso physics. Una volta caricata la libreria è possibile applicare un metodo, in questo caso il metodo avvia la simulazione fisica.

local physics = require("physics")
physics.start()

Aggiungere la fisica alla piattaforma

Per aggiungere la fisica ad un oggetto grafico si utilizza il comando physics.addBody, che prevede almeno un argomento obbligatorio, ovvero il nome dell'oggetto. In questo caso il secondo argomento indica che l'oggetto grafico è statico, come una barriera, impossibile da spostare. Tutti i corpi statici non sono soggetti a gravità.

physics.addBody(platform, "static")

Aggiungere la fisica al palloncino

Con l'argomento dynamic il palloncino sarà soggetto ad una forza gravitazionale che va dall'alto al basso, come nel nostro mondo fisico reale. Il terzo parametro tra parentesi graffe è una tabella, ovvero un insieme di proprietà costituite da una coppia nome/valore. In questo caso associa al palloncino un corpo fisico circolare con raggio di 50.

physics.addBody(balloon, "dynamic", {radius = 50, bounce = 0.3})

Interazione con il palloncino

Le interazioni utente/applicazione vengono gestite con delle funzioni ascoltatore, le quali ascoltano degli eventi. La funzione verrà eseguita solamente quando un certo evento verrà ascoltato. La funzione viene definita in una variabile; essa prende l'oggetto e gli viene applicato il metodo applyLinearImpulse, il quale permette di applicare una forza lineare ad un qualsiasi oggetto grafico (in questo caso il palloncino).

Questo metodo necessita quattro parametri:

  • Intensità della componente orizzontale della forza (valori positivi = spinta verso sinistra, negativi = spinta verso destra, nulli)
  • Intensità della componente verticale della forza (valori positivi = spinta verso l'alto, negativi = spinta verso il basso, nulli)
  • Dove applicare la forza rispetto all'asse X
  • Dove applicare la forza rispetto all'asse Y

Nel nostro caso secondo gli ultimi due parametri la forza verrà applicata nel centro del palloncino e al click il palloncino andrà verso l'alto. Se la forza non viene applicata nel centro dell'oggetto, ma viene applicata in un altro punto, l'oggetto ruoterà, come accade nel mondo reale (ruoterà all'infinito se non viene applicato un attrito).

local function pushBalloon()
balloon:applyLinearImpulse(0, -0.75, balloon.x, balloon.y)
end

Aggiungere ascoltatore eventi

È un metodo per associare un ascoltatore ad un oggetto grafico. Questo metodo addEventListener necessita di due argomenti:

  • Parola chiave che identifica l'azione
  • Cosa fare, in questo caso invocare la funzione pushBalloon

balloon:addEventListener("tap", pushBalloon)

Aggiungere il punteggio

Il punteggio conta il numero di tocchi sul palloncino. La variabile inizialmente vale 0 e rappresenta il numero di tocchi sul palloncino; ogni volta che viene toccato il palloncino il valore incrementa di 1. La variabile tapText è l'oggetto grafico testuale che sarà visualizzato nel display e che mostrerà il numero di tap.

Per visualizzare del testo in Solar 2D esiste un comando, ovvero display.newText che permette di visualizzare del testo nel display. I parametri sono:

  • L'oggetto da visualizzare (in questo caso il valore di tapCount)
  • Dove verrà visualizzato rispetto all'asse X (in questo caso centrato orizzontalmente)
  • Dove verrà visualizzato rispetto all'asse Y (in questo caso in alto)
  • Selezionare il font (in questo caso il font nativo del dispositivo in cui viene visualizzato)
  • Dimensione del font in pixel

local tapCount = 0
local tapText = display.newText(tapCount, display.contentCenterX, 20, native.systemFont, 40)

Aggiornare il punteggio

Ad ogni tap il punteggio verrà incrementato di 1. tapText.text permette di cambiare il valore con il nuovo valore aggiornato di tapCount. Ciò va aggiunto alla funzione pushBalloon.

local function pushBalloon()
tapCount = tapCount + 1
tapText.text = tapCount
balloon:applyLinearImpulse(0, -0.75, balloon.x, balloon.y)
end

Compilare il codice

Bisogna infine compilare il codice per un determinato dispositivo. Per fare ciò bisogna andare su File -> Build e selezionare le opzioni consone. Corona cerca di mantenere in maniera automatica la risoluzione dell'area di lavoro rispetto al dispositivo. Per mantenere le proporzioni degli oggetti ed evitare quindi che si deformino esistono dei comandi:

  • Default: vengono applicate delle bande nere nell'area superiore e in quella inferiore
  • LetterBox: per mantenere le proporzioni. Per evitare ciò, il rapporto altezza/larghezza del dispositivo deve essere lo stesso del rapporto altezza/larghezza dell'area di lavoro.
  • ZoomEven: viene tagliato il quadrato ai lati (zoom)

Per impostare uno dei due comandi bisogna andare sul file config.lua e modificare il valore di scale.

Lua

Lua è un linguaggio di script interpretato, veloce, potente e leggero; è nato in ambito accademico e ha preso poi piede in ambito commerciale.

Convenzioni Lua

  • Lua è case-sensitive.
  • Gli identificatori sono degli oggetti che vengono utilizzati per identificare variabili e nomi di funzioni; devono essere stringhe che non possono iniziare con un numero.
  • Esistono alcune parole riservate che non possono essere utilizzate come identificatori (and, break, do, else, else if, end, for, function, if, in, local, nil, or, repeat, return, then, true, until). Se queste parole vengono scritte in maiuscolo non sono più riservate.

Commenti in Lua

--

Anteprima
Vedrai una selezione di 5 pagine su 17
Appunti lezioni introduttive teoriche Laboratorio di Game Programming Pag. 1 Appunti lezioni introduttive teoriche Laboratorio di Game Programming Pag. 2
Anteprima di 5 pagg. su 17.
Scarica il documento per vederlo tutto.
Appunti lezioni introduttive teoriche Laboratorio di Game Programming Pag. 6
Anteprima di 5 pagg. su 17.
Scarica il documento per vederlo tutto.
Appunti lezioni introduttive teoriche Laboratorio di Game Programming Pag. 11
Anteprima di 5 pagg. su 17.
Scarica il documento per vederlo tutto.
Appunti lezioni introduttive teoriche Laboratorio di Game Programming Pag. 16
1 su 17
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Giulia_Cancian di informazioni apprese con la frequenza delle lezioni di Game programming e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Udine o del prof Ballis Demis.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community