Unity – Spaceship Shooting Game – JS – Game Controller

1. MAIN TOP MENU> GameObject> Create Empty> rename it ‘Game Controller’
2. Inspector> Transform> small gear icon> Reset
3. Inspector> Assign the tag GameController

Generate a single asteroid

4. Assign the cript ‘GameController.js’

#pragma strict

var hazard : GameObject;   // oggetto pericoloso - Assign the asteroid prefab inside Inspector
var spawnValues : Vector3; // Assign the max value of asteroid Vector3 position inside Inspector example X=6 Z=16

function Start () {
    SpawnWaves ();
}

function SpawnWaves () {
    // Asteroid position, Random values: X -6 to 6 | Z 16 to -16
    var spawnPosition : Vector3= new Vector3 (Random.Range (-spawnValues.x, spawnValues.x), spawnValues.y, spawnValues.z);
    // Asteroid rotation
    var spawnRotation : Quaternion= Quaternion.identity;
    // Render the hazard
    Instantiate (hazard, spawnPosition, spawnRotation);
}

Generate multiple asteroids

#pragma strict

// ######################### VARIABILI ASTEROIDI START ##################################
// Assegnare da Inspector il prefab Asteroid
var hazard : GameObject;  
// Assignare da Inspector la posizione nella quale può essere generato Asteroid, 
// per X=6, sarà uguale per X a +6 o -6 unità Unity dal centro 0,0,0  
var spawnValues : Vector3; 
// Assegnare da Inspector il numero di asteroidi per ondata da generare  
var hazardCount : int;
// Assegnare da Inspector il tempo di attesa nel generare i singoli asteroidi di un'ondata
var spawnWait : float;
// Assegnare da Inspector il tempo di attesa per generare il primo asteroide
// il giocatore avrà il tempo di concentrarsi prima di iniziare a giocare
var startWait : float;
// Assegnare da Inspector il tempo di attesa tra un'ondata e la successiva
var waveWait : float;
// ######################### VARIABILI ASTEROIDI END ####################################

function Start () {
    // Al'interno della funzione start richiamo la funzione per generare le ondate di asteroidi
    SpawnWaves ();
}

// FUNZIONE GENERAZIONE ONDATE ASTEROIDI START
function SpawnWaves () {
    // imposto una breve pausa per dare il tempo al giocatore di concentrarsi prima di iniziare a giocare
    yield WaitForSeconds (startWait);
    // GENERAZIONE ONDATE INIZIO - while sempre vero, genera un ciclo infinito di asteroidi
    while (true)
    {
        // Genera la singola ondata di asteroidi, il numero di asteroidi che compone l'ondata è la variabile hazardCount
        for ( var i : int= 0; i < hazardCount; i++)
        {
             var spawnPosition : Vector3= new Vector3 (Random.Range (-spawnValues.x, spawnValues.x), spawnValues.y, spawnValues.z);
             var spawnRotation : Quaternion= Quaternion.identity;
            Instantiate (hazard, spawnPosition, spawnRotation);
            // Tempo di attesa che trascorre tra la generazione di un asteroide e il successivo
            // per evitare che si scontrino tra loro
            yield WaitForSeconds (spawnWait);
        }
        yield WaitForSeconds (waveWait);
    }
    // GENERAZIONE ONDATE FINE - while sempre vero, genera un ciclo infinito di asteroidi
}
// FUNZIONE GENERAZIONE ONDATE ASTEROIDI END