Lezione 03 - Clonare un Oggetto
In questa lezione impareremo a creare un oggetto in scena partendo da un prefab.
Last updated
In questa lezione impareremo a creare un oggetto in scena partendo da un prefab.
Last updated
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.
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à
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.
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
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
Mandando in Play la scena, dovrebbe essere possibile lanciare una freccia ogni volta che si preme il tasto Space
Come esercizi addizionali, completare:
L'Esercitazione 03 - Spawner Multipli
L'Esercitazione 04 - Spawner Prefab