Flappy Bird Game Parte 10

« Older   Newer »
 
  Share  
.
  1. ZeroRed97
     
    .

    User deleted


    10)Realizziamo il sistema
    In questa parte trattiamo il sistema vero e proprio ovvero quegli script che andranno a regolare ad esempio l'inizio o la fine del gioco,lo script che ci permetterà di scegliere quale uccello usare .
    Iniziamo creando due gameobject vuoto e chiamiamoli Gamecontroller e Menu Controller:


    Creiamo due script omonimi e trasciniamoli rispettivamente ai due oggetti:
    Compiliamo così Gamecontroller ,per facilitare la parte e evitare errori pesanti questi script ve li scrivo io vi invito comunque a leggere le note e capire cosa fanno effettivamente

    CODICE
    using UnityEngine;
    using System.Collections;

    public class GameController : MonoBehaviour {
           public static GameController Riferimento;//C stiamo riferendo a questo script
           private const string Uccello_Scelto="UccelloScelto";//Riferimento ad una costante .Aggiungeremo altri uccelli alla scena
           private const string Uccello_Punk="UccelloPunk";
           private const string Uccello_Giallo="UccelloGiallo";

           // Use this for initialization
           void Awake () {
                   Esistenza ();
                   Inizio ();

           }
           
           // Update is called once per frame
           void Esistenza () {//questa funzione ci permette di portare in ogni scena del nostro gioco il gameobject gamecontroller
                   if(Riferimento!=null)//Se non esiste
                   {
                           Destroy(gameObject);
                   }else{
                           Riferimento = this;//è questo
                           DontDestroyOnLoad(gameObject);//L'oggetto non si distrugge
                   }
            }
           void Inizio () {
                   if (!PlayerPrefs.HasKey ("Inizio"))//Con has key recuperiamo se esiste un chive di letra diciamo così che si chiama inizio

                   { //Salviamo il valore del nostro punteggio migliore oviamente all'inizio sarà zero
                           
                           PlayerPrefs.SetInt (Uccello_Scelto, 0);//Usiamo la logica delle variabile bool sintetizzando diciamo che 0 e 1 sono i valori .
                           PlayerPrefs.SetInt (Uccello_Punk, 1);//Lo 0 vuol dire falso mentre 1 vuol dire vero
                           PlayerPrefs.SetInt (Uccello_Giallo, 1);
                           PlayerPrefs.SetInt ("Inizio",0);//Salviamo lo stato in modo da poterlo poi recuperare
                   }
           }

           public void ImpostaUccelloScelto (int uccello_Scelto) {//Scegliamo l'uccello
                   PlayerPrefs.SetInt (Uccello_Scelto,uccello_Scelto);
           }
           public int ScegliUccelloScelto () {
                   return PlayerPrefs.GetInt (Uccello_Scelto);
           }
                   public void SbloccaUccelloPunk () {//Se non è sbloccato sblocchiamolo
                           PlayerPrefs.SetInt (Uccello_Punk,1);
                   }
           public int èsbloccatoUccelloPunk () {//Non succede quasi nulla
                           return PlayerPrefs.GetInt (Uccello_Punk);
           }
           public void SbloccaUccelloGiallo () {//Se non è sbloccato sblocchiamolo
                   PlayerPrefs.SetInt (Uccello_Giallo,1);
           }
           public int èsbloccatoUccelloGiallo  () {//Non succede quasi nulla
                   return PlayerPrefs.GetInt (Uccello_Giallo);
     }

    }



    CODICE
    using UnityEngine;
    using System.Collections;

    public class MenuController : MonoBehaviour {
           public static MenuController Riferimento;//C stiamo riferendo a questo script
           [SerializeField]
           private GameObject[] Uccelli;
           private bool èsbloccatoUccelloPunk, èsbloccatoUccelloGiallo;
           // Use this for initialization
           void Awake () {
                   Esistenza ();
           }
           void Start () {
                   Uccelli [GameController.Riferimento.ScegliUccelloScelto ()].SetActive (true);
                   ControlloUccelli ();
           }
           // Update is called once per frame
           void Update () {
           
           }
           void Esistenza () {//questa funzione ci permette di portare in ogni scena del nostro gioco il gameobject gamecontroller
                   if(Riferimento!=null)//Se non esiste
                   {
                           Riferimento = this;//è questo
           
                   }
           }
           public void InizioGioco()
           {
                   Application.LoadLevel ("Scena1");
           }
           void ControlloUccelli () {
                   if(GameController.Riferimento.èsbloccatoUccelloPunk () == 1)
                           {
                           èsbloccatoUccelloPunk = true;
                       }
                   if(GameController.Riferimento.èsbloccatoUccelloGiallo () == 1)
                   {
                           èsbloccatoUccelloGiallo = true;
                   }
           }
           public void CambiaUccello () {
                   if (GameController.Riferimento.ScegliUccelloScelto () == 0)
                           
                   {
                           if(èsbloccatoUccelloPunk){//Se abbiamo sbloccato il punk
                                   Uccelli [0].SetActive (false);//Rosa non si deve attivare per questo 0 corrisponde al primo oggetto dell'indice
                                   GameController.Riferimento.ImpostaUccelloScelto(1);//Si attiva punk
                                   Uccelli [GameController.Riferimento.ScegliUccelloScelto ()].SetActive (true);
                           }
                   }else {
                           if(GameController.Riferimento.ScegliUccelloScelto () == 1)//Se siamo punk
                           {
                           if(èsbloccatoUccelloGiallo){
                                           Uccelli [1].SetActive (false);//Rosa non si deve attivare per questo 0 corrisponde al primo oggetto dell'indice
                                           GameController.Riferimento.ImpostaUccelloScelto(2 );//Si attiva punk
                                           Uccelli [GameController.Riferimento.ScegliUccelloScelto ()].SetActive (true);
                                   }else{
                                           Uccelli [1].SetActive (false);//corrisponde al secondo oggetto dell'indice
                                           GameController.Riferimento.ImpostaUccelloScelto(0 );//Si attiva punk
                                           Uccelli [GameController.Riferimento.ScegliUccelloScelto ()].SetActive (true);
             
       }
                           }else if(GameController.Riferimento.ScegliUccelloScelto () == 2)//Se siamo punk
                           {
                                   Uccelli [2].SetActive (false);//Rosa non si deve attivare per questo 0 corrisponde al primo oggetto dell'indice
                           GameController.Riferimento.ImpostaUccelloScelto(0);//Si attiva punk
                           Uccelli [GameController.Riferimento.ScegliUccelloScelto ()].SetActive (true);
                           }  
                   }
         }

    }

    Torniamo nella schermata dell'editor e trasciniamo gli uccelli negli slot corrispondenti a GameObject[] Uccelli,

    Queste parentesi dopo gameobject indicano un elenco di oggetti che formeranno una sorta di lista .Gli 1 e 0 che fanno parte invece delle funzioni seguenti indiano una variabile che se è 0 indica che l'oggetto è sbloccato mentre l'1 è sbloccato,
    Questa riga indica invece l'uccello sbloccato dall'elenco if (GameController.Riferimento.ScegliUccelloScelto () == 0)
    Se è 0 ci stiamo riferendo al primo elenco dell'arrays a 1 al secondo mentre 2 al terzo
    Rendiamolo prefab trascinandolo nell'apposita cartella ci servirà perchè nella scena principale dovremmo averlo.A questo punto creiamo il 3 ed ultimo script che va a gestire il sistema ,andiamo nella scena di gioco non più nel menu iniziale,creiamo ora come abbiamo fatto un empty gameobject e chiamiamolo Gameplay controller,ad esso creiamo ed aggiungiamo uno script omonimo:
    Compiliamolo così:
    CODICE
    using UnityEngine;
    using System.Collections;
    using UnityEngine.UI;//Usiamo l'interfaccia UI
    using UnityEngine.SceneManagement;//Con  unity 5.3 si usa questo metodo per caricare le scene
    public class GameplayController : MonoBehaviour {
           public static GameplayController Riferimento;
           [SerializeField]
           private Text  gameover;// I Vari testi
           [SerializeField]
           private Button Restart,Istruzioni;// I pulsanti istruzioni e pausa
           [SerializeField]
           private GameObject PausePanel;//Il gameobject pause panel
           [SerializeField]
           private GameObject[] Uccelli;//Gli uccelli
           [SerializeField]
           private GameObject[] Trofei;//Vedremo poi
           [SerializeField]
           private Image TrofeoImage;


           // Use this for initialization
           void Awake () {
                   Esistenza ();

           }
           void Start () {
                   
           }
           
           // Update is called once per frame
           void Update () {
           
           }
           void Esistenza () {//questa funzione ci permette di portare in ogni scena del nostro gioco il gameobject gamecontroller
                   if(Riferimento!=null)//Se non esiste
                   {
                           Riferimento = this;//è questo

                   }
           }
           public void PauseGame() //Funzione per mettere in pausa
           {
                   if(Uccellino.Riferimento != null)
                   {
                           if(Uccellino.Riferimento.èvivo)
                           {
                                   PausePanel.SetActive (true);
                                   gameover.gameObject.SetActive (false);
                                   Time.timeScale = 0f;//0 come tempo equivale a tutto fermo
                           }
                   }
           }
           public void VaiAlMenu() //Funzione perandare al menu
           {
                   Application.LoadLevel ("MenuInziale");
           }
           public void ResumeGame() //Funzione per riprendere dalla pausa
           {
                   PausePanel.SetActive (false);//PausePanel inattivo
                   Time.timeScale = 1f;//Il tempo scorre
           }
           public void RestartGame() //Funzione per incominciare da capo
           {
                   
                   Scene scene = SceneManager.GetActiveScene ();

                   SceneManager.LoadScene (scene.name);
           }
           public void PlayGame() //Funzione per incominciare da capo
           {
                   

                   Uccelli [GameController.Riferimento.ScegliUccelloScelto ()].SetActive (true);
                   Istruzioni.gameObject.SetActive (false);
                   Time.timeScale = 1f;//Il tempo scorre
           }

           public void FineGioco() //Funzione per incominciare da capo
           {

                   gameover.gameObject.SetActive (true);

           }


                           }


    Ora creiamo un nuovo text e chiamiamolo gameover e disattiviamolo.Creiamo poi un bottone e lo chiamiamo istruzioni . A questo punto dovreste essere in grado di ricreare ed animare i due uccelli che vi allego in questo pack.Creiamolo esattamente come avevamo fatto nelle prima parte di questa guida.Trascuriamo invece trofei e trofeo image. Posizionamoli a queste coordinate 0,28 x 2,74 y mentre come dimensioni impostiamo la scale a circa 0,17Esterno inve al pause panel aggiungiamo un componente text che chiamiamo puntegio,riaggiorneremo successivamente tutte le componenti a voi apparirà differente da me nn preoccupatevi vi spiegherò poi.

    Disattiviamoli in quanto quando sceglieremo nel menu precedente con chi giocare si attiverà poi l'uccellino con cui giocare . Ora dovremmo trascinare il game controller prefab nella scena come vi avevo detto precedentemente .
    Ora trasciniamo i vari oggetti del gameplay controller script come in figura:

    Bene fatto questo ora il nostro sistema di gioco dovrebbe funzionare,dobbiamo fare ora i vari allacciamenti con i bottoni : così per cambiare uccellino,trasciniamo il menu controller e dal menu controller script e scegliamo dalle funzione cambia uccello.

    Per start trasciniamo sempre il menu controller e poi scegliamo del game controller script la funzione inizio gioco

    Al bottone pausa aggiungiamo così:

    Al bottone menu trascinaimo gameplay controller:

    Creiamo ora uno script per caricare un livello chiamiamolo level manager e compiliamolo così:
    CODICE
    using UnityEngine;
    using System.Collections;

    public class LevelManager : MonoBehaviour {

           // Use this for initialization
           void Start () {
           
           }
           
           // Update is called once per frame
           void Update () {
           
           }
           public void LoadLevel (){
                   Application.LoadLevel ("scena1");
           }
    }

    Così per il pulsante reload




    Edited by ZeroRed97 - 15/11/2016, 19:24
     
    .
0 replies since 15/11/2016, 12:28   16 views
  Share  
.