Crea un gioco ispirato a Fruit Ninja con Unity

Cosa starai creando

introduzione

In questo tutorial imparerai come creare un gioco 3D mobile usando C # e Unity. L'obiettivo del gioco è tagliare la frutta che appare sul palco usando il touch screen.

In questo tutorial imparerai i seguenti aspetti dello sviluppo del gioco Unity:

  • importazione di modelli 3D
  • scorrere i gesti
  • line renderers
  • forze fisiche
  • Sprite 2D

L'interfaccia utente del gioco è semplice. Lo screenshot qui sotto ti dà un'idea dell'opera d'arte che useremo e di come l'interfaccia utente finale andrà a finire. Puoi trovare il disegno e le risorse aggiuntive nei file sorgente del tutorial su GitHub.

1. Impostazione del progetto

Passaggio 1: creare un nuovo progetto Unity

Apri Unity e seleziona Nuovo progetto dal File menu per aprire la nuova finestra di dialogo del progetto. Dillo a Unity dove vuoi salvare il progetto e impostare ilImpostare i valori predefiniti per: menu a 3D.

Passaggio 2: configura le impostazioni di compilazione

Nel prossimo passaggio, ti verrà presentata l'interfaccia utente di Unity. Scegli il progetto per lo sviluppo mobile scegliendo Costruisci le impostazioni dal File menu e selezionando la tua piattaforma di scelta.

Fase 3: opera d'arte

La prima cosa che dobbiamo fare dopo aver selezionato la piattaforma di destinazione è scegliere la dimensione del disegno che useremo nel gioco. Questo ci aiuterà a selezionare una dimensione adeguata per le trame 3D e la GUI 2D senza rendere il disegno sfocato o utilizzare trame troppo grandi per il dispositivo di destinazione. Ad esempio, la grafica deve avere una risoluzione maggiore se si sta puntando a un iPad con display retina rispetto a un Lumia 520.

iOS

  • iPad senza Retina: 1024 x 768 px
  • iPad con Retina: 2048px x 1536 px
  • 3.5 "iPhone / iPod Touch senza Retina: 320 px x 480 px
  • 3.5 "iPhone / iPod con Retina: 960 px x 640 px
  • 4 "iPhone / iPod Touch: 1136 px x 640 px

androide

Poiché Android è una piattaforma aperta, esiste una vasta gamma di dispositivi, risoluzioni dello schermo e densità di pixel. Alcuni dei più comuni sono elencati di seguito.

  • Tablet Asus Nexus 7: 800 px x 1280 px, 216 ppi
  • Motorola Droid X: 854 x 480 px, 228 dpi
  • Samsung Galaxy SIII: 720px x 1280px, 306 ppi

Windows Phone e BlackBerry

  • Blackberry Z10: 720px x 1280px, 355 ppi
  • Nokia Lumia 520: 400 px x 800 px, 233 dpi
  • Nokia Lumia 1520: 1080px x 1920px, 367 ppi

Tieni presente che il codice che scriveremo in questo tutorial può essere utilizzato per scegliere come target qualsiasi piattaforma.

Passaggio 4: Esporta grafica

A seconda dei dispositivi che hai scelto come target, potrebbe essere necessario convertire il materiale illustrativo nella dimensione e densità di pixel consigliate. Puoi farlo nel tuo editor di immagini preferito. Ho usato il Regola dimensioni ...  funzione sotto il Utensili menu in OS X Anteprima applicazione.

Passaggio 5: configura l'interfaccia utente di Unity

Prima di iniziare, assicurati che il 2D pulsante nel Scena il pannello non è evidenziato. È anche possibile modificare la risoluzione che viene visualizzata nel Gioco pannello.

Ti verranno quindi presentati i pannelli dell'area di lavoro, che utilizzeremo anche in questo tutorial. Prenditi un momento per guardare i pannelli dell'interfaccia principale, come ad esempio ScenaGioco, Gerarchia, Progetto, Risorse, e Ispettore. Li useremo spesso in questo tutorial.

Passaggio 6: Linguaggio di programmazione

È possibile utilizzare uno dei tre linguaggi di programmazione quando si utilizza Unity, C #UnityScript, una variazione di JavaScript e fischio. Ogni linguaggio di programmazione ha i suoi pro e contro, e spetta a te decidere quale preferisci. La mia preferenza personale va al linguaggio di programmazione C #, quindi questa è la lingua che userò in questo tutorial.

Se decidi di utilizzare un altro linguaggio di programmazione, assicurati di dare un'occhiata al Riferimento degli script di Unity per degli esempi.

2. Risorse

Effetti sonori

Userò un numero di suoni per migliorare l'esperienza audial del gioco. Gli effetti sonori utilizzati in questo tutorial sono stati ottenuti da PlayOnLoop e Freesound.

Modelli 3D

Per creare il gioco, abbiamo prima bisogno di ottenere alcuni modelli 3D. Raccomando 3docean per modelli e trame di alta qualità, ma se stai provando o imparando, i modelli gratuiti funzioneranno altrettanto bene. I modelli di questo tutorial sono stati scaricati da SketchUp 3D Warehouse in cui è possibile trovare un'ampia varietà di modelli 3D.

Poiché Unity non riconosce il formato di file di SketchUp, è necessario convertirlo in qualcosa che Unity può importare. Per prima cosa dobbiamo scaricare la versione gratuita di SketchUp, che si chiama SketchUp Make.

Apri il modello 3D in SketchUp Make, seleziona Esporta> Modello 3D dal File menu e scegliere Collada (* .dae). Scegli un nome e una posizione, quindi fai clic su Salvare. Questo creerà un file e una cartella per il modello 3D. Il file contiene i dati per l'oggetto 3D mentre la cartella contiene le trame del modello. Nel prossimo passaggio, importeremo il modello in Unity.

3. Importare attività

Prima di iniziare la codifica, è necessario aggiungere le risorse al progetto Unity. Puoi farlo in diversi modi:

  • selezionare Importa nuova risorsa dal Risorse menu
  • trascina e rilascia le risorse nella finestra del progetto
  • aggiungere gli articoli alla cartella delle risorse del progetto

Dopo aver completato questo passaggio, dovresti vedere le risorse nel tuo progetto Risorse cartella nel Progetto pannello.

4. Impostazione della videocamera e dell'illuminazione

Passaggio 1: impostazione della videocamera

In questo passaggio, posizioniamo la fotocamera principale per creare la vista che vogliamo. Seleziona la fotocamera principale dal Gerarchia pannello e regolare il Trasformare valori nel Ispettore per abbinare quelli indicati di seguito.

Non preoccuparti se non vedi modifiche. Non abbiamo ancora creato nulla per la videocamera.

Passaggio 2: Impostazione della luce

Affinché i nostri oggetti siano visibili nel mondo 3D, dobbiamo aggiungere luce alla scena. Selezionare Crea altro dal GameObject menu e selezionare Luce direzionale. Questo creerà un oggetto che produce un raggio di luce. Cambialo Trasformare valori come mostrato nella seguente schermata per farlo illuminare la scena.

La luce dovrebbe essere visibile sulla scena, come mostrato nello screenshot seguente.

5. Aggiungi sfondo

Useremo a folletto trama come il nostro sfondo. Per impostazione predefinita, le immagini importate in Risorse la cartella viene convertita in Struttura istanze che possono essere applicate agli oggetti 3D. Dobbiamo cambiarli Struttura istanze a Sprite Texture istanze per l'immagine che vogliamo usare come sfondo.

Seleziona l'immagine che vuoi convertire nel Risorse pannello e apri il Ispettore. Selezionare folletto dal Tipo di trama menu.

Trascina e rilascia lo sfondo nel Gerarchia pannello. Dovrebbe apparire automaticamente nel Scena pannello. Aggiusta il Trasformare valori nel Ispettore come mostrato nello screenshot successivo.

6. Creare la GUI del punteggio

Per visualizzare il punteggio del gioco, utilizzeremo Unity's Testo della GUI e un modello 3D importato.

Passaggio 1: aggiunta del modello Apple

Seleziona il modello 3D importato da te scelto Risorse pannello e trascinalo sul Scena. Userò un modello di mela. Aggiusta il Trasformare valori nel Ispettore per abbinare quelli indicati di seguito.

Questo posizionerà la mela nella parte superiore sinistra dello schermo.

Passaggio 2: aggiunta del testo della GUI

Insieme al modello della mela, mostreremo un numero che indica il punteggio del giocatore. Questo è il numero di frutti che il giocatore ha tagliato.

Selezionare Crea altro> Testo della GUI dal GameObject menu per creare un oggetto di testo, posizionarlo a destra del modello di mela e modificare il testo nel Ispettore pannello a 0.

Puoi incorporare un font personalizzato importandolo nel Risorse cartella e cambiando il Font proprietà del testo nel Ispettore.

7. Creare la GUI del timer

Useremo un timer per indicare quando il gioco è finito. È composto da a Texture GUI mostrando un'icona e a Testo della GUI visualizzazione del tempo rimanente.

Passaggio 1: aggiunta dell'icona dell'orologio

Per aggiungere l'icona dell'orologio, selezionare l'immagine che si desidera utilizzare nel Risorse pannello e apri il Ispettore. Selezionare GUI dal Tipo di trama menu per convertirlo in una Texture GUI. Trascina e rilascia l'immagine sul Scena e cambia i suoi valori di trasformazione in quelli mostrati sotto.

La scena dovrebbe ora assomigliare a questo.

Passaggio 2: aggiunta del testo della GUI

Ripeti i passaggi per aggiungere il testo del punteggio per aggiungere il testo del timer. Non dimenticare di impostare il testo sull'ora corretta.

8. Prefabbricato di allarme

L'avviso è a Texture GUI che mostreremo quando il timer raggiunge 0. Mostrerà un gioco sul messaggio al centro dello schermo.

Per creare l'avviso, converti l'immagine di avviso in a Texture GUI usando il Ispettore. Trascinalo dal Gerarchia pannello al Risorse pannello per convertirlo in a Prefab.

9. Timer Classe

Ora implementiamo il Timer classe. Seleziona il Testo della GUI temporale, clicca il Aggiungi componente pulsante nel Ispettore pannello e scegliere Nuovo script. Dai un nome allo script Timer e non dimenticare di cambiare la lingua in C #. Apri il file appena creato e segui i passaggi successivi.

Passaggio 1: dichiarare le variabili

Iniziamo creando un numero di variabili che useremo nel Timer classe.

tempo privato GUITextTF; pubblico GameObject alertReference

Diamo un'occhiata a ciascuna delle variabili.

  • timeTF: un riferimento al testo della GUI del tempo
  • alertReference: un riferimento al prefabbricato di allerta

Useremo questi riferimenti per accedere all'ora e allertare oggetti di gioco e cambiarne i valori. Impostare l'avviso prefabbricato nel Ispettore.

Passaggio 2: installazione

Con le variabili dichiarate, impostiamo il timeTF valore accedendo al guiText proprietà dell'oggetto di gioco corrente. Questo ci permetterà di modificare il valore del testo in seguito.

Chiamiamo anche il InvokeRepeating metodo, che invocherà il ReduceTime metodo ogni secondo.

void Start () timeTF = gameObject.guiText; InvokeRepeating ("ReduceTime", 1, 1); 

Passaggio 3: implementazione ReduceTime

Il ReduceTime il metodo è responsabile dell'aggiornamento del testo del timer e della visualizzazione del messaggio di avviso. Il gioco termina quando arriva il momento 0. Aggiungere il seguente blocco di codice al Timer classe.

void ReduceTime () if (timeTF.text == "1") / * Alert * / Time.timeScale = 0; Instantiate (alertReference, new Vector3 (0.5f, 0.5f, 0), transform.rotation); audio.Play (); GameObject.Find ( "AppleGUI"). GetComponent().Stop();  timeTF.text = (int.Parse (timeTF.text) - 1) .ToString (); 

Iniziamo testando se il tempo sta per finire. Se vero, interrompiamo il gioco cambiando il Orizzonte temporale proprietà a 0, crea un'istanza di avviso e riproduci il suono del gioco.

Se il tempo non sta per finire, riduciamo semplicemente il suo valore di 1. Per fare questo, usiamo il int.Parse metodo per convertire la stringa temporale in un numero, sottrarre 1, e chiama Accordare su di esso per convertire il risultato in una stringa.

Passaggio 4: Ricaricare Metodo

Questa è l'ultima parte del Timer classe. Nel Ricaricare metodo, chiamiamo LoadLevel sul Applicazione classificare e ricaricare il livello corrente, reimpostando ogni oggetto e variabile al suo stato iniziale.

void Reload () Application.LoadLevel (Application.loadedLevel); 

Questo è come dovrebbe apparire la classe completa al termine.

usando UnityEngine; usando System.Collections; public class Timer: MonoBehaviour private GUIText timeTF; pubblico GameObject alertReference; void Start () timeTF = gameObject.guiText; InvokeRepeating ("ReduceTime", 1, 1);  void ReduceTime () if (timeTF.text == "1") / * Alert * / Time.timeScale = 0; Instantiate (alertReference, new Vector3 (0.5f, 0.5f, 0), transform.rotation); audio.Play (); GameObject.Find ( "AppleGUI"). GetComponent().Stop();  timeTF.text = (int.Parse (timeTF.text) - 1) .ToString ();  void Reload () Application.LoadLevel (Application.loadedLevel); 

10. Prefabbricato di Apple

La mela è uno degli elementi più importanti del gioco ed è uno degli oggetti interattivi dello schermo. Il giocatore è in grado di utilizzare il touch screen del dispositivo per tagliare la mela, aumentandone il punteggio.

Trascina la mela dal Risorse pannello al Scena. Non preoccuparti della sua posizione, perché la convertiamo in a Prefab in un attimo e rimuoverlo dal Gerarchia.

Passaggio 1: aggiungere il corpo rigido

Per rilevare una collisione con la mela, dobbiamo aggiungere un Corpo rigido ad esso. Per aggiungerne uno, selezionare Aggiungi componente dal Ispettore pannello e scegliere Fisica> corpo rigido. È possibile lasciare le impostazioni ai loro valori predefiniti.

Passaggio 2: aggiungi il Collector

Abbiamo anche bisogno di aggiungere un collisore alla mela per rilevare le collisioni. Questo collisore definirà l'area colpita della mela. Clicca il Aggiungi componente pulsante nel Ispettore pannello, scegliere Fisica> Box Collider, e cambia i suoi valori come mostrato nello screenshot qui sotto.

Nel Scena pannello, una scatola verde dovrebbe apparire intorno alla mela, che rappresenta il collisore che abbiamo appena aggiunto.

11. Splash Prefab

Il prefabbricato splash sarà usato come effetto visivo per quando il frutto viene tagliato dal giocatore. Apparirà sul palco per ogni frutto che il giocatore taglia e svanisce lentamente nel tempo. Converti l'immagine in a folletto come descritto in precedenza e aggiungerlo al Scena.

Aggiungi uno script e trascinalo di nuovo Risorse pannello per creare a Prefab. Apri la classe appena creata.

12. spruzzo Classe

Il spruzzo class gestisce le immagini create quando il frutto viene tagliato.

Passaggio 1: dichiarare le variabili

Queste variabili vengono utilizzate per calcolare e impostare un valore alfa per il prefabbricato dello splash. Cambiando la sua proprietà alfa possiamo svanire il prefabbricato con il passare del tempo.

private Color randomAlpha; corrente mobile correnteAlpha;

Passaggio 2: installazione

In questo metodo calcoliamo un valore alfa casuale da 0.3 a 0.5 e memorizza quel valore nel randomAlpha variabile. Quindi impostiamo l'alfa risultante su colore proprietà dell'oggetto di gioco.

Nell'ultima riga di codice invochiamo il metodo che diminuirà ogni valore 300 millisecondi, creando un effetto dissolvenza.

void Start () randomAlpha = new Color (1, 1, 1, Random.Range (0.3f, 0.5f)); gameObject.renderer.material.color = randomAlpha; InvokeRepeating ("ReduceAlpha", 0.3f, 0.3f); 

Step 3: Riduci Alpha e Distruggi

Per ridurre l'alfa, dobbiamo prima ottenere il valore corrente. Il currentAlpha variabile memorizza questo valore. Quindi sottraiamo 0.1 da quel valore e riassegnare il nuovo alpha all'oggetto del gioco. L'immagine viene rimossa quando è quasi invisibile.

void ReduceAlpha () currentAlpha = gameObject.renderer.material.color.a; if (gameObject.renderer.material.color.a <= 0.1f)  Destroy(gameObject);  else  gameObject.renderer.material.color = new Color(1, 1, 1, currentAlpha - 0.1f);  

Questo è ciò che spruzzo sembra la classe.

usando UnityEngine; usando System.Collections; public class Splash: MonoBehaviour private Color randomAlpha; corrente mobile correnteAlpha; void Start () randomAlpha = new Color (1, 1, 1, Random.Range (0.3f, 0.5f)); gameObject.renderer.material.color = randomAlpha; InvokeRepeating ("ReduceAlpha", 0.3f, 0.3f);  void ReduceAlpha () currentAlpha = gameObject.renderer.material.color.a; if (gameObject.renderer.material.color.a <= 0.1f)  Destroy(gameObject);  else  gameObject.renderer.material.color = new Color(1, 1, 1, currentAlpha - 0.1f);    

13. Mela Classe

Con il nostro prefabbricato splash creato, possiamo ora continuare con il Mela classe. Questa classe gestirà le azioni, come il rilevamento delle collisioni, l'aggiornamento del punteggio e la rimozione della mela dalla scena.

Passaggio 1: dichiarare le variabili

Tre variabili sono dichiarate nel Mela classe:

  • splashReference: riferimento al prefabbricato splash
  • randomPos: posizione per il prefabbricato della spruzzata
  • scoreReference: riferimento al testo della GUI del punteggio
[SerializeField] private GameObject splashReference; private Vector3 randomPos = new Vector3 (Random.Range (-1, 1), Random.Range (0.3f, 0.7f), Random.Range (-6.5f, -7.5f)); punteggio GUIText privatoRiferimento;

Passaggio 2: Ottieni il punteggio di riferimento

Per ottenere un riferimento al testo del punteggio usiamo il Trova metodo. Questo metodo cerca gli oggetti di gioco attivi e restituisce l'oggetto che stiamo cercando, il punteggio Testo della GUI in questo caso.

void Start () scoreReference = GameObject.Find ("Score"). guiText; 

Con il scoreReference set variabile, ora siamo in grado di aumentare il suo valore quando un frutto viene tagliato.

Step 3: Distruggi quando sei fuori scena

Nel Aggiornare metodo, controlliamo se il frutto non è più visibile sullo schermo accedendo al suo y posiziona e rimuovilo se vero. Questo ci aiuta a liberare memoria distruggendo oggetti di gioco inutilizzati.

void Update () / * Rimuovi la frutta se fuori vista * / if (gameObject.transform.position.y < -36)  Destroy(gameObject);  

Passaggio 4: gestire le collisioni

Il prossimo codice usa il OnCollisionEnter metodo per rilevare quando il frutto viene tagliato dal giocatore. Quando ciò accade, riproduciamo il suono del taglio e rimuoviamo il frutto. Successivamente, creiamo una nuova istanza di splash prefab e aggiorniamo il punteggio.

void OnCollisionEnter (Collision other) if (other.gameObject.name == "Line") Camera.main.GetComponent().Giocare(); Destroy (gameObject); Instantiate (splashReference, randomPos, transform.rotation); / * Aggiorna punteggio * / scoreReference.text = (int.Parse (scoreReference.text) + 1) .ToString (); 

Questo è ciò che è completo Mela sembra la classe.

usando UnityEngine; usando System.Collections; public class Apple: MonoBehaviour [SerializeField] private GameObject splashReference; private Vector3 randomPos = new Vector3 (Random.Range (-1, 1), Random.Range (0.3f, 0.7f), Random.Range (-6.5f, -7.5f)); punteggio GUIText privatoRiferimento; void Start () scoreReference = GameObject.Find ("Score"). guiText;  void Update () / * Rimuovi la frutta se fuori vista * / if (gameObject.transform.position.y < -36)  Destroy(gameObject);   void OnCollisionEnter(Collision other)  if(other.gameObject.name == "Line")  Camera.main.GetComponent().Giocare(); Destroy (gameObject); Instantiate (splashReference, randomPos, transform.rotation); / * Aggiorna punteggio * / scoreReference.text = (int.Parse (scoreReference.text) + 1) .ToString (); 

14. FruitSpawner Classe

Il FruitSpawner la classe crea un'istanza e sposta i frutti sulla scena. È collegato alla fotocamera principale.

Passaggio 1: dichiarare le variabili

Queste sono le variabili dichiarate in questa classe.

[SerializeField] private GameObject appleReference; private Vector3 throwForce = new Vector3 (0, 18, 0);
  • appleReference: riferimento al prefabbricato della mela
  • throwForce: la forza usata per spingere i frutti verso l'alto

Passaggio 2: Richiama spawn

Nelle prossime righe di codice, chiamiamo il InvokeRepeating metodo per invocare il SpawnFruit metodo ogni sei secondi. Questo aggiungerà nuovi frutti alla scena ogni sei secondi, dando al giocatore il tempo di affettarli prima che il frutto cali sul fondo della scena.

void Start () InvokeRepeating ("SpawnFruit", 0.5f, 6); 

Passaggio 3: SpawnFruit Metodo

Il SpawnFruit il metodo crea i frutti e li spinge verso l'alto affinché il giocatore possa tagliare. Noi usiamo a per dichiarazione per istanziare i frutti, posizionarli casualmente sulla scena e applicare una forza fisica usando il addForce metodo.

void SpawnFruit () for (byte i = 0; i < 4; i++)  GameObject fruit = Instantiate(appleReference, new Vector3(Random.Range(10, 30), Random.Range(-25, -35), -32), Quaternion.identity) as GameObject; fruit.rigidbody.AddForce(throwForce, ForceMode.Impulse);  

Questo è il completo FruitSpawner classe.

usando UnityEngine; usando System.Collections; public class FruitSpawner: MonoBehaviour [SerializeField] private GameObject appleRiferimento; private Vector3 throwForce = new Vector3 (0, 18, 0); void Start () InvokeRepeating ("SpawnFruit", 0.5f, 6);  void SpawnFruit () for (byte i = 0; i < 4; i++)  GameObject fruit = Instantiate(appleReference, new Vector3(Random.Range(10, 30), Random.Range(-25, -35), -32), Quaternion.identity) as GameObject; fruit.rigidbody.AddForce(throwForce, ForceMode.Impulse);   

15. Controlli touch

Ora implementiamo i comandi touch. Il giocatore sarà in grado di utilizzare il touch screen per tagliare i frutti. Visualizzeremo questo disegnando una linea usando il LineRenderer classe e poi controllando se il frutto si scontra con il gesto di scorrimento del giocatore.

Passaggio 1: dichiarare le variabili

Iniziamo creando alcune variabili.

  • c1, c2: queste variabili impostano il colore della linea
  • lineGO: questo oggetto del gioco manterrà il renderizzatore di linee
  • lineRenderer: l'istanza del renderer di riga
  • io: un valore int utilizzato per impostare la dimensione e l'indice della linea
public Color c1 = Color.yellow; public Color c2 = Color.red; linea GameGObject privata; LineRenderer lineRenderer privato; int privato = 0;

Passaggio 2: installazione

Nel Inizio metodo, impostiamo gli oggetti e le proprietà necessari per la linea. Iniziamo creando un nuovo GameObject istanza contenente il LineRenderer. Quindi usiamo alcuni dei metodi di renderizzatore di linea per impostare il modo in cui apparirà.

void Start () lineGO = new GameObject ("Line"); lineGO.AddComponent(); lineRenderer = lineGO.GetComponent(); lineRenderer.material = new Material (Shader.Find ("Mobile / Particles / Additive")); lineRenderer.SetColors (c1, c2); lineRenderer.SetWidth (0.3F, 0); lineRenderer.SetVertexCount (0); 

La maggior parte delle proprietà impostate in questo blocco di codice sono facilmente comprensibili, SetColor cambia il colore della linea e SetWidth imposta la sua larghezza. Prestare particolare attenzione al SetVertexCount linea. Questo metodo specifica il numero di punti della linea. Chiamando questo metodo con un numero maggiore di punti, possiamo aumentare la dimensione della linea. Questo diventerà più chiaro nel prossimo passo.

Passaggio 3: Crea linea

La linea è creata nel Aggiornare metodo. Per prima cosa testiamo se il giocatore sta toccando lo schermo recuperando il touchCount proprietà del Ingresso classe. Se la proprietà è maggiore di quello 0, significa che c'è almeno un dito sullo schermo del dispositivo.

Manteniamo un riferimento al Toccare oggetto per un accesso più facile e verificare in quale fase si trova attualmente. Ne abbiamo bisogno Mosso fase per essere in grado di creare la linea.

Se il giocatore sta muovendo il dito sullo schermo, possiamo iniziare a creare un segmento di linea in quella posizione. Invochiamo il SetVertexCount di nuovo il metodo per aumentare il numero massimo di segmenti della linea.

void Update () if (Input.touchCount> 0) Touch touch = Input.GetTouch (0); if (touch.phase == TouchPhase.Moved) lineRenderer.SetVertexCount (i + 1); Vector3 mPosition = new Vector3 (Input.mousePosition.x, Input.mousePosition.y, 15); lineRenderer.SetPosition (i, Camera.main.ScreenToWorldPoint (mPosition)); i ++;  

Passaggio 4: Aggiungi collettori

Con la linea in atto, aggiungiamo un collisore ad esso per aiutarci a rilevare una collisione con uno qualsiasi dei frutti. Il seguente frammento di codice crea e aggiunge un collettore di riquadri alla linea usando il AddComponent metodo e imposta la sua posizione al lineRendererLa posizione attuale. L'ultima riga di codice modifica la dimensione predefinita del collisore in modo che corrisponda alle dimensioni della linea.

BoxCollider bc = lineGO.AddComponent(); bc.transform.position = lineRenderer.transform.position; bc.size = new Vector3 (0.1f, 0.1f, 0.1f);

Passaggio 5: Rimuovi linea

Rimuoviamo la linea quando il giocatore non tocca più lo schermo. Questo previene eventuali collisioni indesiderate con le mele.

Nel prossimo frammento di codice, controlliamo se la fase corrente di Toccare l'oggetto è Conclusa e imposta il conteggio dei vertici del lineRenderer a 0. Questo rimuoverà i segmenti di linea correnti, ma non distruggerà l'oggetto, permettendoci di riutilizzarlo in seguito. Abbiamo anche resettato il io variabile per consentire un uso successivo.

if (touch.phase == TouchPhase.Ended) / * Rimuovi Line * / lineRenderer.SetVertexCount (0); i = 0; 

Step 6: Distruggi i Collider

Una volta che la linea è stata rimossa, non abbiamo più bisogno dei collettori di scatole ad essa associati. Per prima cosa creiamo un array di BoxCollider oggetti, memorizzando i box collider dell'oggetto gioco di linea. Quindi eseguiamo il loop sull'array, distruggendo ogni box collider.

/ * Rimuovi Line Colliders * / BoxCollider [] lineColliders = lineGO.GetComponents(); foreach (BoxCollider b in lineColliders) Destroy (b); 

Diamo un'occhiata alla completa implementazione del LinesHandler classe.

usando UnityEngine; usando System.Collections; public class LinesHandler: MonoBehaviour public Color c1 = Color.yellow; public Color c2 = Color.red; linea GameGObject privata; LineRenderer lineRenderer privato; int privato = 0; void Start () lineGO = new GameObject ("Line"); lineGO.AddComponent(); lineRenderer = lineGO.GetComponent(); lineRenderer.material = new Material (Shader.Find ("Mobile / Particles / Additive")); lineRenderer.SetColors (c1, c2); lineRenderer.SetWidth (0.3F, 0); lineRenderer.SetVertexCount (0);  void Update () if (Input.touchCount> 0) Touch touch = Input.GetTouch (0); if (touch.phase == TouchPhase.Moved) lineRenderer.SetVertexCount (i + 1); Vector3 mPosition = new Vector3 (Input.mousePosition.x, Input.mousePosition.y, 15); lineRenderer.SetPosition (i, Camera.main.ScreenToWorldPoint (mPosition)); i ++; / * Aggiungi Collider * / BoxCollider bc = lineGO.AddComponent(); bc.transform.position = lineRenderer.transform.position; bc.size = new Vector3 (0.1f, 0.1f, 0.1f);  if (touch.phase == TouchPhase.Ended) / * Rimuovi Line * / lineRenderer.SetVertexCount (0); i = 0; / * Rimuovi Line Colliders * / BoxCollider [] lineColliders = lineGO.GetComponents(); foreach (BoxCollider b in lineColliders) Destroy (b); 

16. Passaggi finali

Passaggio 1: test

È tempo di testare il gioco. stampa Comando-P per giocare a Unity. Se tutto funziona come previsto, allora sei pronto per i passaggi finali.

Passaggio 2: Impostazioni del lettore

Quando sei soddisfatto del tuo gioco, è il momento di selezionare Costruisci le impostazioni dal File menu e fare clic su Impostazioni del giocatore pulsante. Questo dovrebbe far apparire il Impostazioni del giocatore nel Ispettore pannello in cui è possibile impostare i parametri per la propria applicazione.

Queste impostazioni sono dati specifici dell'applicazione che includono il creatore o la società, la risoluzione e la modalità