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

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
  • 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

La connessione della condizione

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

L'unità Instantiate

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

Il grafo completo

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

Was this helpful?