domenica 22 febbraio 2015

SCRIPT DI FINE GIOCO

Secondo me uno dei temi meno affrontati dagli youtuber o i blogger che espongono tutorial su Unity3d è quello della fine del gioco.
Ok, ho fatto il menù di pausa, di inizio, ho sviluppato un gioco... Ma come faccio a farlo finire questo gioco? Come faccio per esempio ad aggiungere dei titoli di coda e dopo rimandare al menù iniziale?
Un gioco si può far finire sostanzialmente in due modi:

1. L'ANIMAZIONE

Si può per esempio decidere che quando il personaggio entrerà in una zona, che sarà un trigger, parta un animazione. Un esempio è il gioco horror "Outlast", dove il gioco finisce con un animazione degli swat che uccidono te stesso, in seguito partono i titoli di coda.
Prima di tutto si dovrà fare un'animazione di fine gioco.
Per fare questo dovrete aggiungere una finestra "animation", non presente di default nella scena. Per fare ciò andate su:
Window>Animation.
Questo corso è destinato a persone che conoscono già le basi di Unity3d, quindi capaci di fare un'animazione. Per imparare le animazioni, guardate qualche videotutorial su YouTube.

Creata l'animazione, la dovrete assegnare all'FPS:
Nell' Inspector andate su GetComponent>Animation.
Aggiungete nel box apposito l'animazione e togliete la spunta su Play Automatically.
L'Animation Type dell'animazione dovrà essere uno. Per impostarlo selezionare le righette alla destra del lucchetto, in riga con la scritta Inspector, e in Animation Type mettere "1".


Adesso si parla di Trigger. Create un trigger andando su:
GameObject>CreateEmpty.
All'oggetto vuoto dovrete assegnare il box collider:
Nell'Inspector andate su GetComponent>BoxCollider. Spuntate la casella "Is Trigger".
Apparirà una "scatola" verde, che sarà la zona nella quale bisognerà entrare per attivare l'animazione.

Adesso si parla dello script:

#pragma strict

var FPS : GameObject;
var LevelToLoad : String;

function OnTriggerEnter () {
FPS.animation.Play();
yield WaitForSeconds(QUI DOVRANNO ESSERE MESSI I SECONDI DI DURATA DELL'ANIMAZIONE es. 15.9);
Application.LoadLevel(LevelToLoad);
}

Lo script andrà assegnato al Trigger che attiverà l'animazione. Nella variabile FPS mettete il First Person Controller, mentre nella variabile "LevelToLoad" mettete il nome IDENTICO alla scena dove compariranno i titoli di coda oppure direttamente il nome della scena con il menù di inizio.
Si ricorda che ogni scena per essere caricata deve essere aggiunta alla Build Settings.
In questo modo, quando si entrerà nel trigger, si attiverà un'animazione che farà finire il gioco.

2. IL TRIGGER

Se si vorrà far finire il gioco in modo più semplice ma meno sviluppato bisognerà creare un Trigger nello stesso modo di prima e assegnargli questo script:

#pragma strict

var LevelToLoad : String;

function OnTriggerEnter () {
Application.LoadLevel(LevelToLoad);
}

Lo script andrà assegnato al Trigger e nella variabile "LevelToLoad" mettete il nome IDENTICO alla scena da caricare. In questo modo, quando si entrerà nel Trigger, verrà caricata la scena desiderata.

NON ESITATE A CHIEDERE IN CASO DI BISOGNO!

1 commento:

  1. Ma se io voglio un Game Over quando mi tocca il nemico, e cioè se vengo raggiunto e preso oppure toccato, mi deve riportare al menu di inizio dove si sceglie di giocare o uscire...cioè la schermata iniziale, come si può fare?

    RispondiElimina