‫Ciao e Benvenuto.
‫In questa lezione faremo la nostra mossa, faremo un po' di movimento, spuntando una casella.
‫Gli consentiremo di muoversi e muoversi a velocità costante.
‫E questa volta lo faremo usando alcune funzioni di libreria dall'interno.
‫Irreale.
‫Quindi metteremo alla prova tutta la nostra conoscenza di testa di file e include.
‫Entriamo e vediamo come funziona.
‫Quindi il modo in cui voglio che questa mossa funzioni è che voglio che si sposti senza intoppi da dove è iniziata a
‫un offset target per un periodo di un certo numero di secondi.
‫Quindi il modo in cui avremo bisogno di configurarlo è aggiungere alcune nuove proprietà nel file di intestazione.
‫Quindi iniziamo aggiungendo una sezione privata all'intestazione del
‫file e quindi aggiungeremo una nuova proprietà che verrà aggiunta ovunque, che definirà l'offset, lo spostamento offset.
‫Quindi quanto lontano dovrebbe spostarsi questo motore quando attivato.
‫Quindi il modo in cui lo faremo, utilizzerà un vettore F e lo chiamerò offset
‫di spostamento in modo da non dargli un valore predefinito.
‫Lo faremo nell'editor.
‫Quindi creerò un'altra proprietà U che verrà nuovamente aggiunta ovunque, che
‫sarà la quantità di tempo necessaria per spostarsi sull'obiettivo.
‫Quindi faremo in modo che sia un galleggiante, che è il tempo di movimento.
‫Lo imposterò su un valore predefinito di, diciamo, 4 secondi.
‫Ora, c'è un'altra cosa che voglio inserire qui, che per ora è un booleano, che
‫ci permetterà di attivare la mossa in modo che si sposti verso il basso quando attiviamo questo booleano.
‫Quindi creiamo di nuovo un'altra nuova proprietà, la modifichiamo ovunque in modo da poterla aggiungere anche mentre stiamo
‫giocando.
‫Questo sarà un booleano che dice che dovrebbe spostarsi e per impostazione predefinita sarà impostato su false.
‫Quindi, quando spuntiamo questo nell'editor, quando stiamo giocando, andrà e si sposterà al suo offset di
‫spostamento target.
‫In precedenza, quando avevamo un componente in movimento, eseguivamo tutti i passaggi manualmente.
‫Ma voglio mostrarti che in realtà ci sono alcune funzionalità integrate da fare.
‫Molti dei calcoli di cui abbiamo bisogno sono integrati direttamente in Unreal e c'è anche una funzione chiamata
‫V interpreta costante.
‫E cosa c'è di interessante, diamo un'occhiata alle osservazioni.
‫Quindi interpolare un vettore da un vettore corrente a un vettore target usando un passo costante.
‫Quindi ciò significa che nel tempo ci sposteremo dalla corrente all'obiettivo a una certa velocità, e lo
‫farà costantemente, il che suona esattamente come vogliamo.
‫Vogliamo spostarci dalla nostra posizione attuale a una posizione di offset target a velocità costante.
‫Ora puoi vedere che dai un'occhiata alla sintassi di questa funzione.
‫Puoi vedere che ha un tipo di ritorno di vettore.
‫Quindi questa è la nuova posizione che sta interpolando.
‫Quindi ha due ingressi.
‫Abbiamo un vettore F corrente e per ora non preoccuparti degli altri simboli attorno a questo effetto, solo la
‫cosa importante è che è un fattore corrente e quindi l'obiettivo che vogliamo che alla
‫fine raggiunga, quindi ha il Delta tempo, quindi lo usa per rendere indipendente il frame rate del movimento e la velocità di
‫interpolazione.
‫Quindi quanto velocemente dovremmo spostarci dalla nostra posizione attuale all'obiettivo?
‫Ora noterai che qui sopra nella documentazione in realtà ha una sezione che dice include e questo ti dice la
‫riga di inclusione di cui avrai bisogno nel tuo file C++ per poter usare questa
‫funzione.
‫E come abbiamo visto nel video precedente, la riga di inclusione ci consente di copiare le definizioni da
‫questo particolare file.
‫E una delle definizioni è la definizione di questa funzione.
‫Quindi ci consente di utilizzare questa costante di intercettazione V per ora la V davanti a questa funzione significa sostanzialmente
‫che esegue l'interpolazione sui vettori.
‫Ecco perché si chiama v interpret al contrario di altre funzioni di interpolazione che sono disponibili anche in
‫questo file di libreria.
‫Quindi diamo un'occhiata a come lo useremmo.
‫Prima di tutto, copieremo la riga di inclusione dalla documentazione e andremo nel nostro ACP
‫di spostamento dove vogliamo implementarlo nel corpo del componente tick.
‫Ma includono che non includiamo all'interno del corpo del componente tick.
‫Dobbiamo fare le inclusioni tutte nella parte superiore del file.
‫Quindi è lì che metterò il mio.
‫Metterò il mio dopo l'inclusione di spostare un punto h.
‫Quindi inseriremo e includeremo per la matematica barra in avanti unreal math utility dot h.
‫Ora quello che possiamo fare è usare effettivamente la funzione all'interno del nostro componente tick.
‫Eliminiamo semplicemente il codice che abbiamo già e spuntiamo compila.
‫Perché lo stavamo usando per capire come chiamare le funzioni su altri attori.
‫E quello che dobbiamo fare è se scorri verso l'alto, puoi vedere il modo per chiamare questo è f matematica, due punti,
‫V, toccando costante a.
‫Quindi stiamo facendo questo operatore due punti e due punti che guarda all'interno della classe di matematica F, che
‫organizza insieme tutte queste utilità matematiche.
‫Quindi faremo matematica F.
‫Colon.
‫E qui puoi vedere un sacco di completamento automatico in arrivo per diverse funzioni matematiche incluse in quel file
‫di intestazione che abbiamo appena incluso in questo file.
‫Quindi puoi dare un'occhiata, vedere che tutte le cose interessanti sono qui.
‫Riesco a vedere un mucchio di interpolazioni e interpolazioni circolari ecc. ma volevamo che la v interpretasse la costante.
‫Possiamo premere tab per completarlo e quindi aprire alcune parentesi e possiamo vedere gli argomenti che dobbiamo
‫passare nella corrente, il tempo delta target e la velocità di intercettazione.
‫Quindi iniziamo a creare alcune variabili per contenere alcune di queste.
‫Quindi, prima di tutto, abbiamo bisogno di un vettore F, che sarà la nostra posizione attuale, e non
‫lo imposteremo ancora.
‫Quindi avremo un vettore F per la posizione target e quindi otterremo un galleggiante per la
‫velocità.
‫E dovremo calcolare ciascuno di questi individualmente per capire come possiamo realizzare questo
‫movimento.
‫Quindi la posizione attuale sarà relativamente semplice.
‫Dobbiamo ottenere la posizione attuale dell'attore proprietario.
‫Allora come lo facciamo?
‫Sostituiamo questo punto e virgola con un segno di uguale.
‫Quindi andiamo a fare una coppia di parentesi per ottenere il proprietario che faremo con Arrow.
‫Quindi chiameremo una funzione sull'attore proprietario e otterremo la posizione dell'attore e poi un paio di parentesi e un
‫punto e virgola per terminarlo.
‫Quindi questo ci fornisce la posizione attuale dell'attore proprietario.
‫Ora, che dire della nostra posizione di destinazione?
‫Sappiamo che abbiamo una proprietà chiamata Move Offset.
‫Quindi sarà coinvolto qui.
‫Ma abbiamo bisogno di aggiungere la posizione originale a questo spostamento offset.
‫Quindi, per questo, dobbiamo catturare la posizione originale all'inizio del gioco.
‫Quindi abbiamo bisogno di un archivio variabile.
‫Quindi passiamo al nostro esercito.
‫H E non sarà una modifica da nessuna parte.
‫Quindi lo metterò sotto proprietà valore, sarà un vettore F chiamato posizione originale.
‫Non lo imposteremo su nulla qui che andremo oltre nei nostri film.
‫CP In Begin Play, rimuovi questa riga di commento e inserisci il nostro codice, che
‫sarà che la posizione originale è uguale a ottenere la freccia tra parentesi del proprietario per ottenere la posizione dell'attore in questo modo.
‫Quindi ora che abbiamo catturato la nostra posizione originale e abbiamo iniziato a giocare, possiamo usarla nella tecnologia.
‫Quindi vai in tick e impostiamo la nostra posizione di destinazione uguale alla posizione originale più l'offset di spostamento.
‫Quindi questa è la nostra posizione di destinazione.
‫E infine, in velocità, beh, questa è essenzialmente la distanza che dobbiamo percorrere divisa
‫per il tempo che dobbiamo percorrere.
‫Quindi, se abbiamo una posizione target e abbiamo una posizione originale, dobbiamo trovare la distanza
‫tra questi due, cosa che possiamo fare con una colonna vettoriale f, distanza dei due punti.
‫Quindi passiamo alle parentesi, la posizione originale e la posizione di destinazione.
‫Quindi questo ci dà la distanza tra questi due vettori.
‫E poi lo divideremo per quello che avevamo in più e ce ne andremo chiamato tempo di spostamento.
‫Quindi questo ci dà la velocità alla quale dovremmo muoverci.
‫E ora possiamo usarli come argomenti per la nostra costante di intercettazione V.
‫Quindi abbiamo prima di tutto, dobbiamo dargli la posizione corrente e poi la posizione di destinazione.
‫Quindi diremo che è il tempo delta, che è già solo un parametro nel componente tick.
‫Quindi dobbiamo solo passarlo.
‫E poi abbiamo la velocità di intercettazione.
‫Quindi passeremo alla velocità come un punto e virgola alla fine di quella linea.
‫E questa è essenzialmente la nuova posizione.
‫Quindi memorizziamolo in un nuovo vettore variabile chiamato nuova posizione uguale a questo.
‫Freddo.
‫Ora, dobbiamo fare qualcosa con quella nuova location perché non va bene averla
‫calcolata, in realtà abbiamo bisogno di spostare l'attore nella nuova location.
‫Quindi è quello che faremo.
‫Lo chiameremo su get Owner così possiamo fare un get own.
‫Freccia tra parentesi.
‫E poi faremo una location per l'attore sul set e passeremo nella nuova location in questo modo e avremo un punto e virgola
‫alla fine della linea.
‫Quindi andiamo avanti e compiliamo questo e vediamo se funziona.
‫Quindi, se andiamo nel dungeon, selezioniamo il muro che vogliamo spostare.
‫Ora puoi vedere che il componente mover ha un offset di spostamento, che vorrò
‫fare nella direzione Z, e penso che farò -600.
‫E poi il tempo di spostamento, 4 secondi, dovrebbe andare bene.
‫Quindi salviamolo e poi premiamo play e vediamo se si muove.
‫Quindi non si muove.
‫E c'è un errore nel registro di output che dice che la mobilità dell'attore è stata impostata su statica, motivo per cui
‫non può muoversi.
‫Quindi, se selezioniamo di nuovo l'attore e osserviamo le sue impostazioni di mobilità, puoi vedere che le impostazioni di mobilità del componente mesh
‫statico, quindi seleziona il componente mesh statico, quindi guarda la mobilità.
‫Puoi vederlo impostato su campioni statici.
‫Non è permesso muoversi.
‫Passiamo a mobile perché vogliamo che si muova.
‫E poi andiamo avanti e premiamo play.
‫Ora puoi vedere nell'oscurità che la guerra stava finendo, il che è perfetto.
‫Penso che abbiamo una mossa da qualche altra parte, come visto su questo pilastro qui che sta anche cercando di muoversi.
‫Quindi non facciamolo.
‫Eliminiamo la mossa, un componente che abbiamo aggiunto lì solo per il test.
‫E non dovrebbe darci errori nel registro di output.
‫Se andiamo avanti nella hit play ora, dovremmo solo che quel muro scenda nella sua posizione target.
‫Quindi ti sfidiamo a farlo muovere con il booleano che abbiamo creato di tua proprietà.
‫Quindi avvolgerai il codice in un'istruzione if appropriata e il codice appropriato in modo che
‫sposti la piattaforma solo quando quel booleano è vero.
‫E poi ricompilare il codice e riprodurre un'espulsione usando F otto, quindi cambiare il booleano e osservare
‫il plat e vedere se si muove quando controlli quel booleano.
‫Quindi metti in pausa il video e prova.
‫Bene.
‫Ben tornato.
‫Quindi andiamo e avvolgiamo questa componente tecnologica in una dichiarazione if, non super, ma tutto il resto che
‫faremo.
‫If dovrebbe spostare e aprire alcune parentesi e spostare tutto questo codice ricordando di indentarlo di un livello perché siamo tra parentesi
‫e vogliamo mostrare che questo verrebbe eseguito solo all'interno dell'istruzione if.
‫Semplifica la lettura di tutti gli undici Taft compilati e quindi dovremmo essere in grado di andare e
‫premere play e premere F8 per espellere se abbiamo catturato il nostro mouse.
‫E poi andremo a dare un'occhiata al nostro profilo e cercheremo di trovare il muro.
‫Oppure possiamo semplicemente fare clic nella scena e quindi selezionare la nostra mossa un componente e controllare dovrebbe muoversi
‫e vanno, il muro inizia a muoversi quando ciò accade.
‫Roba fantastica.
‫Ci vediamo alla prossima lezione.