‫Quindi creeremo una funzione di fuoco e associeremo questa funzione al nostro pulsante sinistro del
‫mouse.
‫E qui puoi vedere che sto disegnando sfere di debug sulla punta della nostra torretta solo per dimostrare
‫che questa mappatura dell'azione funziona.
‫Ogni volta che clicco con il tasto sinistro del mouse, succede qualcosa.
‫Ehi, bentornato.
‫In questo video parleremo della creazione di una funzione di fuoco o di una funzione che possiamo utilizzare
‫quando vogliamo generare i nostri proiettili.
‫Quindi creeremo una funzione di fuoco e la legheremo a una mappatura delle azioni.
‫Ora, abbiamo utilizzato le mappature degli assi.
‫Una mappatura delle azioni è simile.
‫Parliamone ora.
‫Ecco una sezione di uno screenshot della mappatura dell'azione antincendio che abbiamo nelle impostazioni del nostro progetto.
‫Vedrai che abbiamo il pulsante sinistro del mouse assegnato alla mappatura dell'azione di fuoco.
‫Ora una mappatura delle azioni è molto simile a una mappatura degli assi.
‫È possibile assegnargli una chiave o un pulsante.
‫E proprio come una mappatura degli assi, richiede una funzione che può essere collegata alla mappatura dell'azione.
‫Ora, le mappature degli assi attivano ogni singolo fotogramma del gioco.
‫Sono come la funzione tic e il valore float passato cambia a seconda dei pulsanti
‫premuti.
‫Le mappature delle azioni sono leggermente diverse.
‫Una funzione di callback associata a una mappatura di azioni non accetta parametri di input e tutto ciò che accade è quando si
‫preme il pulsante, la funzione viene chiamata.
‫Quello che succede all'interno della funzione dipende da noi come sviluppatori.
‫Ora, le mappature delle azioni sono una tantum.
‫Non succedono ad ogni frame.
‫Succedono solo una volta quando si preme il pulsante.
‫Quindi, se si rilascia il pulsante e lo si preme nuovamente, la funzione verrà richiamata ancora una volta.
‫Ora, quando abbiamo associato le funzioni alle mappature degli assi, abbiamo usato bind axis per le mappature delle
‫azioni, usiamo una funzione chiamata bind action e prende input simili a bind axis.
‫Prende il nome della mappatura dell'azione come una stringa letterale.
‫Richiede anche un puntatore alla classe.
‫Stiamo vincolando la funzione per la quale possiamo usarlo e richiede, ovviamente, una funzione di callback.
‫Ora un parametro aggiuntivo richiede che l'asse di collegamento non richieda come costante enum specificando se desideriamo o
‫meno che questa funzione venga chiamata quando premiamo il pulsante o quando rilasciamo il
‫pulsante.
‫Quindi ci sono due opzioni per questo parametro di input, la costante enum, i. e. premuto e la costante enum,
‫i. e. rilasciato.
‫Ciò significa che possiamo chiamare azione vincolante che passa in i. e. premuto se vorremmo associare una funzione di callback per
‫quando premiamo il pulsante e invece se abbiamo usato i. e. rilasciato, la nostra funzione di richiamata sarebbe
‫stata chiamata quando il pulsante è stato rilasciato per la nostra funzione di fuoco.
‫Ci interessa quando premiamo il pulsante.
‫Quindi creiamo una funzione di fuoco e la leghiamo alla mappatura dell'azione di fuoco.
‫Ora sono qui nello spawn di base e il motivo per cui sono qui nello stagno di base è perché questa funzione di
‫fuoco è qualcosa che possiamo usare nella classe tank e nella classe tower.
‫Quindi, se lo posizioniamo qui nello stagno di base, sia il serbatoio che la torre erediteranno questa funzione.
‫E poiché sia il carro armato che la torre spareranno proiettili, possono semplicemente ereditare la
‫funzione e usarla.
‫Ora, dal momento che vorrei accedere alla funzione in entrambe le classi figlie, posso posizionare questa funzione qui
‫nella sezione protetta, proprio come ruotare la torretta.
‫Quindi sotto rotazione torretta creerò una funzione vuota chiamata fire che non riceve input e possiamo andare
‫avanti e definire la funzione fire in base a CPP.
‫Quindi qui è basato su CPP e appena sotto la torretta di rotazione, posizionerò la funzione di fuoco e
‫dobbiamo qualificare completamente questo nome di funzione e dargli un corpo di funzione.
‫Quindi ora abbiamo una funzione di fuoco.
‫Ora il passaggio successivo è associare questo a una mappatura delle azioni.
‫Ora vogliamo solo associare questa funzione nella classe tank perché il tank è l'unica classe che
‫prenderà l'input dell'utente.
‫In seguito chiameremo la funzione fire nella classe tower, ma ciò sarà come risultato del
‫codice che creiamo e non come risultato dell'input dell'utente.
‫Quindi siamo qui in Tank CP e collegheremo questo e imposteremo il componente di input del giocatore proprio come
‫abbiamo usato l'asse di collegamento.
‫Quindi useremo il componente di input del giocatore.
‫Quindi il componente di input del giocatore e la funzione saranno l'azione vincolante.
‫Ora il primo input sarà la stringa letterale, che andremo a racchiudere in una macro di testo come
‫al solito.
‫E questa mappatura delle azioni è chiamata fuoco.
‫Ora il prossimo parametro sarà quella costante enum che determina se vogliamo che questa funzione venga chiamata
‫o meno quando premiamo il pulsante rispetto a quando rilasciamo il pulsante.
‫E useremo, sottolineo premuto.
‫Dal momento che vorremmo che la nostra funzione venisse chiamata quando premiamo il pulsante.
‫Ora, il prossimo è l'oggetto della classe utente che sarà questo.
‫E infine abbiamo la nostra funzione di richiamata così possiamo dire un incendio di carro armato.
‫E ora la nostra funzione di fuoco è legata alla mappatura dell'azione di fuoco.
‫Quindi sappiamo che la nostra funzione di fuoco è legata alla mappatura dell'azione di fuoco, ma vorremmo una conferma
‫visiva ed è questa la tua sfida.
‫Quindi, nella funzione di fuoco, vorrei che tu disegnassi una sfera di debug.
‫Abbiamo già visto come farlo, quindi vai avanti e compila i parametri con i valori
‫che ritieni appropriati.
‫Usa la posizione del punto di spawn del proiettile.
‫Ora il punto di spawn del proiettile è un componente della scena d'uso e hai visto che i componenti hanno una
‫funzione chiamata ottieni posizione del componente.
‫Questo restituisce un vettore F.
‫Questo è ciò che puoi usare per ottenere la posizione del punto di spawn del proiettile.
‫Ora, quando chiami draw debug sphere, usa una durata di circa 3 secondi in modo che possiamo vedere quella sfera per
‫un po' prima che scompaia.
‫Metti in pausa il video e fallo ora.
‫Bene.
‫Quindi sono tornato qui a Bass Pond e qui a Bass Pond.
‫CP Includerò gli helper di debug del disegno.
‫Quindi abbiamo accesso per disegnare la sfera di debug.
‫Quindi dirò di includere draw debug helpers.
‫E ora quaggiù nella funzione fire, possiamo disegnare la sfera di debug.
‫Ora, la prima cosa che voglio fare è ottenere la posizione del punto di spawn del proiettile.
‫Ora posso creare un vettore f locale per questo e posso chiamare questa posizione del punto di spawn del proiettile e
‫posso inizializzarla usando il punto di spawn del proiettile.
‫E chiamando ottieni la posizione del componente.
‫Quindi ora ho la posizione del punto di spawn del proiettile e questo è ciò che posso usare quando chiamo draw
‫debug sphere.
‫Quindi chiamerò draw debug sphere.
‫E per il primo input abbiamo bisogno del mondo e sappiamo che possiamo ottenere il mondo usando get world next.
‫Abbiamo bisogno del centro della sfera che sarà la nostra posizione del punto di spawn del proiettile.
‫Quindi sarà quello che passerò come secondo parametro.
‫E poi abbiamo bisogno del raggio della sfera.
‫Ora avrò una piccola sfera.
‫Gli darò un raggio di 25 F per il numero di segmenti che userò solo 12 e per il colore posso
‫usare il colore F.
‫Leggi ora quattro disegnano linee persistenti.
‫Avremo le nostre battute in sospeso per 3 secondi in modo da poterlo rendere falso perché non vogliamo
‫che persistano per sempre.
‫Daremo a questa sfera di debug una vita di tre F Quindi andiamo avanti e compiliamo questo ora e premo
‫play e clicco e ora possiamo vedere la nostra sfera di debug e ovviamente scompare dopo
‫3 secondi.
‫Ora questa è una buona conferma che la nostra mappatura delle azioni sta funzionando e ci sta anche dando
‫la verifica della posizione del punto di spawn del proiettile.
‫Quindi, una volta che iniziamo effettivamente a generare proiettili, sappiamo che si genereranno nella posizione corretta,
‫come indicato dalla sfera di debug.
‫Quindi questo è fantastico.
‫Quindi in questo video abbiamo creato una funzione di fuoco e l'abbiamo collegata alla mappatura dell'azione di fuoco.
‫E per dimostrare che stava funzionando, abbiamo disegnato una sfera di debug nel punto di spawn del proiettile ogni volta che facciamo clic con
‫il pulsante sinistro del mouse in modo da avere una funzione di fuoco, siamo quasi pronti per iniziare a generare i proiettili.
‫E abbiamo anche inserito questa funzione nella classe pong di base.
‫In questo modo anche la nostra torre può usarlo.
‫Quindi, nel prossimo video, discuteremo di come la nostra torre utilizzerà questa funzione.
‫Ci vediamo presto.