‫Ehi.
‫Ben tornato.
‫Ora, abbiamo già creato una classe base -- C++.
‫In questo video, deriveremo da quella classe per creare una nuova classe figlio basata su base --.
‫Quindi discutiamo del motivo per cui vorremmo fare una cosa del genere.
‫Quindi abbiamo questa base -- class e sappiamo che avremo due classi diverse che derivano da base
‫--.
‫Avremo il nostro carro armato e avremo la torre.
‫Ora, la base contiene mesh, una capsula e un punto di spawn.
‫E queste sono cose che il Tank e la torre possono ereditare entrambi.
‫Ma anche il serbatoio e la torre avranno alcune funzionalità che differiscono l'una dall'altra.
‫Per prima cosa, il nostro carro armato si sposterà nel mondo e sarà anche controllato dal
‫giocatore.
‫Quindi dovrà essere configurato per ricevere input dalla tastiera e dal mouse.
‫La torre, d'altra parte, starà lì a sedere.
‫Non ha bisogno di alcun input da parte del giocatore poiché le sue azioni saranno tutte controllate dal codice.
‫Quindi, poiché il serbatoio e la torre si comporteranno in modo diverso, utilizzeremo l'ereditarietà per creare classi
‫figlie di base -- così possiamo ereditare ciò che hanno in comune e quindi aggiungere a ciascuna classe quelle
‫caratteristiche che saranno diverse.
‫Quindi siamo di nuovo qui nell'editor e andrò nelle nostre classi C++, la cartella di Tune Tank in
‫cui abbiamo la nostra classe base -- e questa sarà la classe da cui deriviamo.
‫Ora possiamo fare clic con il pulsante destro del mouse qui e selezionare crea una classe C++ derivata da base --.
‫Quindi scegliamo quello e gli permetterò di inserire questa classe nella stessa cartella dei serbatoi di ottimizzazione
‫dei sorgenti come base --.
‫E per questo nome lo chiamerò tank.
‫Quindi la nostra classe di carri armati sarà la classe per il nostro vero carro armato, che controlliamo e ci spostiamo
‫nel mondo.
‫Quindi facciamo clic su crea classe.
‫Ok, quindi abbiamo compilato e il codice vs si è aperto con il nostro nuovo file tank e abbiamo anche Tank CP.
‫Ora questi sono piuttosto spogli.
‫Non c'è davvero niente qui, ma anche se non possiamo vederli, abbiamo ereditato alcune cose
‫dalla classe base.
‫Abbiamo quei componenti che abbiamo aggiunto alla base --.
‫Anche se si tratta di variabili private, esistono ancora in questa classe.
‫Quindi ora che abbiamo creato la nostra classe di carri armati, parliamo di un paio di cose.
‫Il carro armato avrà bisogno che la torretta non lo farà.
‫Bene, dal momento che controlleremo il carro armato, avremo bisogno di un modo per concentrarci sul carro armato mentre
‫si muove per tutto il livello.
‫Ora, in questa immagine, questo qui è un componente della fotocamera.
‫È la classe C++ sei il tuo componente della fotocamera.
‫E questa linea rossa qui è chiamata componente del braccio a molla e la sua classe C++ è il componente del braccio a molla.
‫L'aggiunta di questi componenti a un -- ci consente di visualizzare il -- dal punto di vista della fotocamera.
‫E se la telecamera e il suo braccio a molla sono attaccati al -- in qualche modo, seguiranno il -- in giro
‫per il mondo.
‫Ora, di nuovo qui nell'editor, se torniamo alla nostra cartella --'s e apriamo BP -- tank, possiamo fare clic sul
‫viewport in modo da poter vedere tutto.
‫E poi possiamo selezionare la composizione della capsula e fare clic su aggiungi e seleziona il braccio a molla.
‫Questo è un componente del braccio a molla.
‫Sembra una linea rossa.
‫Ora, con il nostro componente del braccio a molla selezionato, possiamo aggiungere un altro componente e scegliere la fotocamera.
‫Ora, una volta aggiunta la telecamera collegata al braccio a molla, ora abbiamo un modo per vedere dal punto di vista
‫della telecamera una volta che abbiamo effettivamente iniziato a controllare il --.
‫Ora il braccio a molla è piuttosto utile.
‫Ha questa lunghezza del braccio target e se la regoli, vedrai che la fotocamera si regola insieme al braccio
‫a molla.
‫Quindi questo è un modo per controllare la distanza della fotocamera dal --.
‫Quindi queste sono sicuramente cose che vogliamo nella nostra classe --, ma le aggiungeremo
‫dal lato C++ piuttosto che aggiungerle semplicemente qui nel progetto.
‫Quindi li eliminerò.
‫Quindi, per la tua sfida, vorrei che aggiungessi alcune cose alla classe dei carri armati.
‫Per uno, abbiamo bisogno di un componente del braccio a molla e di un componente della fotocamera, quindi crea queste variabili e
‫rendile dei puntatori.
‫Vai avanti e crea una sezione pubblica e una privata e inserisci queste variabili nella sezione privata.
‫Ora avremo bisogno che queste siano proprietà U, quindi fornisci loro macro di proprietà e compila quelle macro con
‫gli specificatori appropriati in base a ciò che hai imparato nelle lezioni precedenti.
‫Ora, una volta create queste variabili, crea un costruttore e inseriscilo nella sezione pubblica
‫e definiscilo nel file CP, quindi all'interno del costruttore costruisci i nostri componenti della fotocamera e del braccio a molla
‫usando crea oggetto secondario predefinito.
‫Assicurati di utilizzare l'allegato di installazione per collegare questi componenti a qualcosa.
‫Vorremmo che il nostro componente del braccio a molla fosse attaccato al componente principale.
‫Quindi usa il componente principale e imposta l'attacco di configurazione e per la fotocamera, collegalo al braccio a molla.
‫Puoi fare riferimento alla classe di base.
‫A Ricorda a te stesso come appare il codice per fare queste cose.
‫Vai avanti e metti in pausa il video e aggiungi queste cose alla classe del carro armato.
‫Tutto bene.
‫Quindi siamo qui a Tank.
‫Ora, prima le cose.
‫Mi piacerebbe avere una sezione pubblica e una sezione privata.
‫Quindi la sezione privata sarà dove aggiungeremo questi due nuovi componenti.
‫Vorremo un componente del braccio a molla a U, che sarà un puntatore, e possiamo chiamare questo braccio a
‫molla.
‫E avremo anche bisogno di un nuovo componente della fotocamera e chiameremo questa fotocamera.
‫Va bene.
‫Se i tuoi nomi sono leggermente diversi.
‫Ora, subito, vedo gli errori di IntelliSense qui, il che significa che dovrò
‫dichiararli in avanti.
‫Quindi userò la lezione con il braccio a molla e la lezione con la fotocamera.
‫E ora questi sono dichiarati in avanti.
‫Ora abbiamo bisogno delle nostre nuove proprietà.
‫Quindi aggiungiamo le nuove macro di proprietà.
‫E all'interno della macro di proprietà vorremo avere alcuni specificatori.
‫Questi saranno visibili ovunque poiché abbiamo visto che i componenti devono essere visibili ovunque per poter
‫regolare i loro parametri nel pannello dei dettagli.
‫Ora, non vedo alcuna necessità immediata di esposizione al grafico dell'evento, quindi non penso che sia necessario leggere,
‫scrivere o leggere blueprint del progetto.
‫Va bene.
‫Se li hai aggiunti, li lascerò fuori ora.
‫Darò a questi una categoria.
‫E poiché questi sono componenti, li inserirò nella nostra categoria di componenti insieme agli altri
‫nostri componenti.
‫Ora non li espongo al grafico degli eventi, quindi non ho bisogno che il nostro meta consenta l'accesso privato specificato
‫qui.
‫Quindi questo è sufficiente per il braccio a molla e vorrei dare al componente della fotocamera la stessa tua proprietà.
‫Quindi lo sto copiando.
‫Quindi ora abbiamo i nostri componenti.
‫La prossima cosa da fare è costruirli nel costruttore, il che significa che abbiamo bisogno di un costruttore.
‫Ora il costruttore avrà lo stesso nome della classe, quindi è un tank e dobbiamo definire questo costruttore nel
‫file CP.
‫Quindi andiamo su Tank CP e creiamo un tank.
‫Quindi c'è il nostro corpo della funzione e il costruttore del serbatoio deve essere preceduto dal nome della nostra classe e
‫dall'operatore di risoluzione dell'ambito.
‫Questi sono questi doppi due punti qui.
‫In questo modo non stiamo solo creando una nuova funzione, ma stiamo definendo il nostro costruttore per questa classe.
‫Ora vorremmo costruire questi componenti.
‫Quindi iniziamo con il braccio a molla.
‫Quindi diremo che il braccio a molla equivale a creare un oggetto secondario predefinito e questo sarà un componente del braccio a molla u.
‫E per il testo, chiamerò semplicemente questo braccio di primavera.
‫E per l'attacco, imposteremo il braccio a molla, installeremo l'attacco, passando nel componente radice.
‫Adesso.
‫Lo stavo aspettando.
‫Eccolo.
‫L'errore IntelliSense che dice che il puntatore al tipo di classe incompleto usa il componente del braccio a molla.
‫Questo perché dobbiamo includere il file di intestazione poiché stiamo creando e utilizzando un componente del braccio a molla.
‫Quindi ecco la mia documentazione irreale del motore e se scorro verso il basso, c'è il mio include.
‫Quindi lo copierò e lo incollerò proprio qui in alto, appena sotto il bordo del serbatoio.
‫Ora, solo una nota a margine in generale, manterrai il tuo file di intestazione di classe incluso
‫in alto e includerai i tuoi componenti al di sotto.
‫Quindi abbiamo il nostro braccio a molla.
‫È ora di costruire la fotocamera.
‫Quindi diremo che la fotocamera crea un oggetto secondario predefinito, il componente della fotocamera.
‫E nella macro di testo, la chiamerò semplicemente fotocamera.
‫E per la fotocamera chiamerò l'allegato di installazione che passa nel braccio a molla.
‫E ovviamente ho bisogno del file di intestazione della fotocamera.
‫Quindi ecco la documentazione del motore irreale e qui dove dice documentazione di
‫ricerca, scriverò il tuo componente della fotocamera e qui ti vedo il componente della fotocamera.
‫Lo selezionerò.
‫Ed ecco la documentazione per il componente della fotocamera.
‫Quindi lo copierò per includerlo e incollarlo proprio qui nella parte superiore del nostro file.
‫E ora dovremmo essere bravi.
‫Ok, quindi andiamo avanti e compiliamo questo.
‫Bene.
‫Quindi ho una compilazione riuscita.
‫Torniamo indietro nell'editor e qui su -- Tank.
‫Ovviamente, non vediamo nulla perché -- il tank è derivato dalla base -- e i componenti che abbiamo appena
‫aggiunto, li abbiamo aggiunti alla classe tank.
‫Quindi BP -- tank non li riceverà perché non deriva dalla classe tank.
‫Ora potremmo creare un nuovo progetto basato sulla classe di carri armati, ma poi dovremmo
‫riconfigurare questi componenti da capo.
‫E non ho proprio voglia di affrontare tutto quel lavoro una seconda volta.
‫C'è un modo più semplice per riparare questo progetto per la classe dei carri armati.
‫Lo facciamo salendo alle impostazioni della classe e nel pannello dei dettagli con le impostazioni della classe selezionate, vediamo
‫le opzioni della classe e c'è questa classe genitore.
‫Il menu a discesa mostra che è impostato su base, ma se facciamo clic su di esso, possiamo cercare
‫tank e scegliere tank come classe base.
‫E ora questo progetto è derivato dalla classe dei carri armati.
‫Quindi vediamo che tutte quelle proprietà che abbiamo impostato con i nostri componenti come la mesh e la dimensione della
‫capsula, sono ancora tutte lì.
‫Solo ora vediamo una telecamera.
‫In effetti, abbiamo un braccio a molla e una fotocamera.
‫E se selezioniamo ora il braccio a molla, possiamo vedere quella linea rossa.
‫Quindi questo è fantastico.
‫Quindi potrei prendere questo componente del braccio a molla e cambiarne la lunghezza del braccio target.
‫Se mi piace, potrei impostarlo su qualcosa come 600 e posso persino cambiarne la rotazione in modo che inclini la fotocamera
‫verso il basso rispetto al serbatoio selezionando la modalità di rotazione e ruotandola leggermente verso l'alto.
‫Mi piace Quindi ora vorrei sottolineare che non dovresti cambiare la posizione della fotocamera.
‫Potrebbe essere allettante selezionare la telecamera e spostarla nel mondo in modo da posizionarla e inclinarla
‫nel modo giusto.
‫Ma questo non è il modo corretto di farlo.
‫Il modo corretto è impostare la rotazione e la lunghezza del braccio target del componente del braccio a molla.
‫E il motivo è che vuoi che la fotocamera sia attaccata all'estremità del braccio a molla.
‫Il braccio a molla ha molte caratteristiche integrate come il restringimento quando la fotocamera urta
‫contro un muro per evitare ostacoli, il blocco della visuale sul laghetto e altre cose del genere.
‫Quindi vorrai che la videocamera sia attaccata all'estremità del braccio a molla e quindi regoli
‫il braccio a molla anziché regolare la posizione e la rotazione della videocamera.
‫Quindi in questo video abbiamo creato la classe tank e abbiamo derivato da base pond per ereditare quelle qualità
‫dalla classe base pond.
‫Abbiamo aggiunto un componente del braccio a molla e un componente della fotocamera e li abbiamo esposti all'editor utilizzando solo visibile
‫e li abbiamo inseriti nella loro categoria.
‫Quindi ci stiamo avvicinando al prodotto finito passo dopo passo e continueremo a sviluppare questo serbatoio
‫nella prossima lezione.
‫Ci vediamo presto.