Lezione 03 - Clonare un Oggetto

In questa lezione impareremo a creare un oggetto in scena partendo da un prefab.

Per poter creare un oggetto in scena a partire da un prefab, si può utilizzare il metodo Instantiate.

Per questa lezione, si consiglia di utilizzare la scena Lezione 03 - Clonare un Oggetto inclusa nel progetto di supporto.

Aprire la Scena

Una volta aperta la scena di supporto, sarà possibile visualizzare un oggetto Spawner:

  • Selezioniamo il gameobject Spawner e notiamo che è già presente il componente Flow Machine.

  • Apriamo il grafo cliccando su Edit Graph nell'Inspector

  • Eliminiamo il nodo Start perché non ci servirà

Intercettare la Pressione di un Tasto

Durante l'evento Update andremo a controllare se il giocatore ha premuto un tasto della tastiera e, in caso positivo, andremo a creare un oggetto.

  • Selezioniamo il gameobject Spawner ed apriamo il grafo (pulsante Edit Graph)

  • Clicchiamo in una zona libera del grafo e selzioniamo Add Unit

  • Cerchiamo l'unità Input.GetKeyDown ed aggiungiamola al grafo

  • Dal menu key selezionamo Space

L'unità Input.GetKeyDown permette di sapere se in un determinato frame è stato premuto un tasto della tastiera: nel caso questo sia avvenuto, verrà restituito al pin di uscita (di tipo bool) il valore true, altrimenti false.

Controllo del Flusso

Vogliamo generare i nostri oggetti solamente se il tasto è stato premuto: collegare quindi l'unità che abbiamo appena creato con l'evento Update sarebbe un errore. Abbiamo quanti bisogno di un sistema per effettuare questo controllo e lo possiamo fare tramite l'unità Branch, che ci permette di eseguire una porzione di codice solamente se una condizione è vera.

  • Clicchiamo sul pin di uscita di Update e rilasciamo in un punto libero del grafo

  • Cerchiamo l'unità Branch per aggiungerla

L'unità Branch apparirà arancione perché non abbiamo ancora aggiunto la condizione di esecuzione

  • Colleghiamo il valore si uscita dell'unità GetKeyDown (pin circolare) con l'elemento dello stesso colore del Branch: abbiamo cioè aggiunto la condizione di esecuzione del codice

Instanziare un Oggetto

Dobbiamo ora creare il nostro oggetto e questo lo possiamo fare tramite l'unità Instantiate che, partendo da un gameobject (ad esempio, un prefab) ne genera un clone e lo aggiunge in scena

  • Dal pin di esecuzione true del Branch, clicchiamo e trasciniamo, rilasciando in un punto libero della scena

  • Cerchiamo l'unità GameObject.Instantiate(original, position, rotation), che ci permette di generare un oggetto dal prefab original in una determinata posizione e rotazione

  • All'interno del campo origina, trasciniamo il prefab Arrow che troviamo in Lezione 03 - Clonare un Oggetto/Prefabs

Dobbiamo indicare in che punto e a che rotazione vogliamo che l'oggetto venga istanziato in scena. Nel nostro caso utilizzeremo l'oggetto stesso che contiene il grafo, cioè il gameobject Spawner:

  • Aggiungiamo una unità Transforom.position (get)

  • Aggiungiamo una unità Transforom.rotation(get)

  • Colleghiamo all'unità Instantiate i pin corrispondenti

Testare il Grafo

Mandando in Play la scena, dovrebbe essere possibile lanciare una freccia ogni volta che si preme il tasto Space

Esercizi Integrativi

Come esercizi addizionali, completare:

  • L'Esercitazione 03 - Spawner Multipli

  • L'Esercitazione 04 - Spawner Prefab

Last updated