Unity: uno sparatutto 2D per Android

Il mondo dedicato allo sviluppo di videogiochi è -fortunatamente- sempre in movimento. Anche il panorama italiano rispecchia questo andamento e nel post di oggi presentiamo un ottimo gioco creato con Unity e "made in Italy".
Starship Shooter la nostra navicella in azione

Parliamo di Starship Shooter, uno sparatutto 2D in classico stile fantascientifico per Android, pubblicato sul Play Store di Google dalla Laura Capone Editore e (cosa non da poco) totalmente gratuito.
Ideato e sviluppato in Italia utilizzando Unity, il gioco è compatibile con smartphone e tablet con un sistema operativo Android 2.3 o maggiore, così da garantire il più elevato numero di dispositivi su cui giocare.

Lo scopo del gioco è quello di sconfiggere le orde aliene di Alnitak che vogliono distruggere la razza umana, ma la vera sfida è sui comandi direzionali della propria nave spaziale, basati sull'inclinazione del dispositivo mobile.
Starship Shooter

Anche se è stato sviluppato con il motore Unity 3D, il gioco è totalmente realizzato in 2D (grazie alle librerie di Unity dedicate al mondo bidimensionale) e la resa è molto buona.
Per scoprire come è stato possibile realizzare questo tipo comando e per carpire qualche piccolo segreto implementativo, abbiamo intervistato l'autore, Mario Buonocore.

SV: Ciao Mario, complimenti per la pubblicazione del tuo gioco sullo Store di Google.
Abbiamo provato "
Starship Shooter". La navicella viene mossa utilizzando l'inclinazione del dispositivo mobile. Idea originale. Ma come l'hai implementata con Unity? Puoi svelarci qualche piccolo segreto?
MB: "Grazie a voi per il post e per i complimenti. Ho utilizzato il vettore tridimensionale Input.acceleration, che misura l'accelerazione lineare di un dispositivo mobile.
L'asse x e l'asse y del vettore mi sono servite per capire rispettivamente il movimento orizontale e verticale che si vuole far compiere alla nave spaziale, mentre l'asse z mi è servita per capire se il dispositivo è rivolto a faccia in su o a faccia in giù, ad esempio se gioco mentre sono disteso sul letto, poichè se il dispositivo è rivolto verso il basso bisogna negare la componente x."

Starship Shooter un livello in azione
Starship Shooter un livello in azione
Ecco un esempio con C# su Unity.
private Vector3 AdjustedAccelerometer ()
{
    Vector3 acceleration = Input.acceleration;

    //if device is face down, x acceleration is reverted
    if (Input.acceleration.z > 0)
        acceleration = new Vector3(-acceleration.x, acceleration.y, acceleration.z);

    return calibrationMatrix.MultiplyVector(acceleration);
}

SV: Nel codice parli di "matrice di calibrazione", ci puoi spiegare cosa intendi?
MB: "La matrice di calibrazione mi serve per impostare il punto di riposo dell'accelerometro, altrimenti se voglio che la mia nave spaziale stia ferma dovrei assumere una posizione poco comoda con il mio smartphone, ovvero come se fosse appoggiato su un tavolo: invece una posizione comoda prevede che lo schermo dello smartphone sia rivolto verso il mio viso, quindi leggermente inclinato, e quello deve essere il vero punto di riposo, che viene impostato ad inizio livello in questo modo:"

void Awake ()
{
    calibrationMatrix = Calibrate(Input.acceleration);
}

......

public static Matrix4x4 Calibrate (Vector3 acceleration)
{
    Quaternion rotate = Quaternion.FromToRotation(new Vector3(0.0f, 0.0f, -1.0f), acceleration);
    Matrix4x4 matrix = Matrix4x4.TRS(Vector3.zero, rotate, Vector3.one);
    return matrix.inverse;
}

MB: "A questo punto, il nuovo vettore tridimensionale creato dal metodo AdjustedAccelerometer() è quello che viene usato per modificare la proprietà Transform.position del game object che rappresenta la nave spaziale."

SV: Grazie e ancora in bocca al lupo!!
MB "Grazie a Sviluppare Videogiochi per l'articolo."

Vuoi provare a fermare l'invasione Alnitakiana e salvare la razza umana?
Scaricalo dallo Store di Google per scoprilo.
Buon divertimento con Starship Shooter.

Starship Shooterun 2D realizzato con Unity 3D

Riferimenti
- Laura Capone Editore: http://www.lauracaponeeditore.com
- Mario Buonocore: https://www.linkedin.com/in/mario-buonocore-55141b8
- Scaricalo da Google Play Store: https://play.google.com/store/apps/details?id=com.lauracaponeeditore.starshipshooter

Commenti