‫Ciao e Benvenuto.
‫In questa lezione, eseguiremo il refactoring del trigger del pool in modo che sia pronto per aggiungere altro
‫codice.
‫Al momento, stava sfuggendo di mano chi lo refactoring in una piccola funzione
‫come questa che è davvero molto più semplice da leggere.
‫Immergiamoci e vediamo come eseguire questo refactor.
‫Bene.
‫Quindi vogliamo mettere un po' di suono nel nostro gioco e il posto in cui lo faremo è nella pistola
‫quando spariamo.
‫Questo è il primo porto di scalo.
‫Penso che un bel tipo di suono di sparo, un suono d'impatto sarebbe fantastico.
‫L'unico problema è che quando sono tornato alla nostra funzione di attivazione del grilletto, ho notato che è diventato straordinariamente
‫grande.
‫Non si adatta a uno dei miei schermi.
‫È anche un po' difficile leggere e capire dove metteremmo questa funzionalità.
‫Quindi, mentre ci sforziamo per capire effettivamente quale sia la funzionalità qui, forse vale la pena fare
‫un rapido refactor o estrarre alcune di queste cose in altri metodi in modo che non sia così difficile da
‫leggere.
‫Ora, se dai un'occhiata a questo codice e provi a capire quali sono le cose di
‫base che sta facendo, vedrai che gran parte di questo è in realtà solo impostato per la nostra linea.
‫Traccia l'intero pezzo dalla riga 28 fino alla 43.
‫E cosa stiamo facendo?
‫Bene, prendiamo la pedina del proprietario, poi controlliamo la ricezione del controller del proprietario, quindi otteniamo il
‫viewport da quello, quindi otteniamo la posizione finale in base alla portata massima e poi passiamo
‫in alcuni parametri di successo per ignorare le cose.
‫Tutto questo è solo impostato per la nostra traccia di linea, quindi perché non lo estraiamo nella sua funzione qui?
‫Andando a creare una nuova funzione privata in basso proprio in basso.
‫Dopo le nostre variabili sarà di bool return perché vogliamo essenzialmente sostituire questa chiamata qui che restituisce
‫il successo con una che ci dà anche il risultato di successo.
‫Quindi lo faremo come qualcosa che chiamerò una funzione di tracciamento della pistola e avrà
‫alcuni parametri qui.
‫Vale a dire, uno di questi sarà il risultato di successo.
‫Quindi premi risultato, e commerciale per renderlo un riferimento.
‫E poiché non è un riferimento costante, sappiamo che è un parametro out.
‫Chiamalo il successo.
‫E in realtà potrebbe essercene un altro di cui abbiamo bisogno qui.
‫Vale a dire, posso vedere che la rotazione sta uscendo da questo pezzo di codice e in realtà stiamo
‫negando quella rotazione.
‫Quindi quello che ci interessa davvero è la direzione delle riprese.
‫Quindi forse è quello che dobbiamo cercare.
‫Quindi creerò un parametro F vector out.
‫Quindi vettore e commerciale e sarà questa direzione di tiro.
‫Queste sono le due uscite che proverranno dalla traccia della pistola.
‫Ora andiamo avanti e creiamo l'implementazione qui.
‫E quello che vogliamo fare è essenzialmente copiare tutto questo codice in quello.
‫Guarda come va.
‫E vogliamo anche controllare questo scatto.
‫Direzione.
‫Tiralo fuori e attaccalo appena prima della fine.
‫O forse solo dopo aver ottenuto la visuale del giocatore, possiamo impostare la direzione del tiro in modo che sia uguale
‫al negativo della rotazione.
‫Ma è importante notare qui che in realtà non vogliamo impostare una variabile locale.
‫Quindi, se metti il tipo qui, imposterà una direzione di tiro locale.
‫Vogliamo eliminarlo in modo che stia impostando la direzione dello scatto nei parametri AMP, il che in realtà
‫significa che sta impostando la direzione dello scatto che passeremo nella funzione che lo chiama.
‫Stesso discorso per il colpo.
‫Abbiamo bisogno di rimuovere questo colpo locale in modo che il colpo passato nella traccia della linea singolo per canale sia il colpo
‫passato nella traccia della pistola.
‫E poi finalmente c'è qualcos'altro da fare è fare una linea che ora non è necessaria e anche questo avrà
‫successo.
‫Bene, dobbiamo solo restituire essere il risultato della traccia della linea singolo per canale.
‫Questo dipenderà dal fatto che la nostra traccia di armi sia riuscita o meno.
‫Quindi siamo riusciti a far durare un po' questo rientro.
‫Ora possiamo adattare tutto su uno schermo ed è un po' più facile capire che, sì,
‫tutto questo è correlato alla traccia di una pistola.
‫Possiamo salire alla nostra pistola CP E ora possiamo impostare il nostro successo di base qui.
‫Quindi, successo nel Pool B, dovremo impostare come traccia della pistola e dobbiamo passare alcuni parametri qui.
‫Quindi dobbiamo ancora dichiararli da qualche parte se il risultato del successo.
‫Sarà uno di questi.
‫Sta per colpire.
‫E l'altro sarebbe stato un vettore F chiamato direzione del tiro.
‫E quelli saranno passati.
‫Quindi avremo prima il colpo, poi la direzione del tiro.
‫E poi punto e virgola alla fine lì.
‫Quindi questo renderà tutto un po' più semplice.
‫Tuttavia, non sto dicendo che abbiamo bisogno anche del controller del proprietario e non voglio che la traccia della pistola sia
‫responsabile del controller del proprietario o dimentichi il controllo del proprietario.
‫Non sembra che sia responsabilità di una traccia di armi per farlo.
‫Suona bene per ottenere un successo.
‫Suona bene per ottenere una direzione di tiro, ma ho intenzione di tracciare la linea per ottenere il controller del proprietario.
‫Quindi, per questo, lo inserirò, inserirò tutto questo codice in un'altra funzione che entrambi possono
‫chiamare.
‫Quindi sarà una funzione che restituisce un controller.
‫Stella.
‫E lo chiameremo il controllore del proprietario del jet.
‫E possiamo farlo a.
‫Come sappiamo, non ha lo scopo di modificare nessuna delle variabili sulla nostra classe di armi.
‫Creiamo quell'implementazione.
‫Basta importare l'implementazione dalla traccia della pistola, correggere eventuali rientranze se necessario.
‫E andremo avanti e restituiremo semplicemente il controllo del proprietario.
‫Quindi non c'è bisogno di fare un controllo delle unghie qui.
‫Quel controllo delle unghie che dobbiamo fare nella funzione che lo sta usando.
‫Quindi solleveremo che non abbiamo nemmeno bisogno di impostare una variabile qui.
‫Possiamo solo andare avanti e tornare.
‫Quindi sarà abbastanza semplice.
‫Possiedo un controller, ma non completamente.
‫E poi imposteremo la variabile nella traccia della pistola.
‫Quindi possiedo un controller otterrò il mio controller in questo modo.
‫Che quindi eseguiamo un ritorno nullo a un ritorno anticipato nullo nella traccia della pistola, che a proposito, deve restituire un valore
‫booleano perché la traccia della pistola sta restituendo un valore booleano.
‫Quindi possiamo andare avanti e restituire false qui perché se non riusciamo a ottenere un controller, non possiamo tracciare una
‫pistola, quindi non possiamo assolutamente colpire nulla.
‫E poi abbiamo anche bisogno di quel controller proprietario più in alto.
‫Laddove abbiamo un attore di successo, lo stiamo facendo subire danni.
‫E fondamentalmente quello che vogliamo fare qui è ottenere il controllo del proprietario proprio qui dentro il nostro attore di successo.
‫Quindi, se colpiamo un attore, otteniamo di nuovo il controller del proprietario.
‫Ora, so che stanno chiamando un po' di traccianti di armi.
‫Prendi un controller e lo rifaremo se colpiamo un attore.
‫Ma questo accadrà solo ogni volta che colpiamo un attore.
‫Quindi non mi dispiace ricalcolarlo due volte perché renderà il codice un po' più leggibile senza
‫dover memorizzare variabili e stati che potrebbero non essere sincronizzati.
‫Quindi ecco qua.
‫Ora abbiamo il controller proprietario di cui abbiamo bisogno per subire danni e il grilletto Apple ha un aspetto molto migliore.
‫Quindi è tutto per questa lezione.
‫Uno veloce.
‫Ho solo rifattorizzato il nostro grilletto in modo da avere una buona base su cui lavorare nella prossima lezione.
‫E lo vedrò.
‫Oh, e sembra che io abbia fatto un po' di booboo qui e loro salgono su un controller.
‫Se provi e compilatore, non farà nulla perché questo valore restituito non sta effettivamente restituendo un
‫puntatore.
‫Quindi vogliamo restituire immediatamente il puntatore nullo in questo caso.
‫Fondamentalmente non possiamo ottenere un pull e quindi non possiamo ottenere un controller.
‫Quindi restituiamo un puntatore nullo.