‫Ciao e Benvenuto.
‫In questa lezione, vedremo come possiamo impostare la nostra piattaforma mobile usando una velocità vettoriale nelle sue
‫variabili membro.
‫E vedremo come possiamo rendere indipendente la sua frequenza dei fotogrammi di movimento usando qualcosa chiamato
‫Delta time.
‫Va bene, tuffiamoci.
‫Quindi, fino a questo punto, abbiamo aggiornato solo un singolo componente del nostro vettore alla volta.
‫E se ti dicessi che non dobbiamo farlo in questo modo?
‫E se riuscissimo ad aggiornare l'intero vettore di una certa quantità in una volta sola?
‫Bene, possiamo.
‫I vettori possono essere aggiunti ad altri fattori se abbiamo visto nella sezione precedente.
‫Quindi quello che potremmo fare è passare alla nostra piattaforma mobile su H e creare qualcosa che sia
‫la nostra piattaforma mobile, il vettore di velocità che ci dice sia la direzione che la velocità a cui vogliamo andare.
‫Quindi il modo in cui lo facciamo è creare una U di proprietà ormai piuttosto familiare e la
‫faremo modificare ovunque in modo che sia visibile nell'ispettore e quindi sarà un vettore
‫di tipo F come abbiamo fatto prima, e la chiameremo la velocità della piattaforma e possiamo darle qualcosa per ora.
‫Quindi faremo un costruttore di vettori F e poi gli daremo solo centinaia di centinaia nel componente X e zero e
‫zero negli altri e poi punto e virgola per terminarlo.
‫E voglio mostrarti solo un altro trucco qui è che insieme alla modifica, ovunque possiamo inserire un altro
‫argomento separato da virgola in questa U.
‫Cosa di proprietà, che assomiglia un po' a una funzione.
‫In realtà, puoi metterne uno che si chiama categoria con la C maiuscola e poi mettere il segno di uguale.
‫E di solito non lascio uno spazio tra questi sono segni di uguale categoria uguale.
‫E poi puoi dare una categoria che vuoi mostrare.
‫Qui sotto puoi vedere che ci sono categorie per trasformare la replica del rendering.
‫Questi sono i tipi di categorie che intendiamo chiamare piattaforma mobile mia in modo da avere una specie
‫di categoria piattaforma mobile in cui inserire queste variabili.
‫E nota che uso le virgolette doppie attorno a quella categoria.
‫Questa è la sintassi corretta.
‫Devi includerli.
‫E poi quello che possiamo fare è usare questa nuova variabile membro nel C++.
‫Quindi, invece di impostare la componente X della posizione corrente, lasciami rimuovere completamente quella
‫linea e riscriverla poiché la posizione corrente è uguale alla posizione corrente più la velocità della piattaforma, ad esempio, metti punto e virgola alla fine della
‫linea e andiamo in Unreal e premi compila e guarda come va.
‫Quindi è stato compilato correttamente.
‫E puoi vedere che ora ho questa sezione della piattaforma mobile sulla mia piattaforma mobile con una velocità della piattaforma e
‫il suo componente x è impostato su 100.
‫Cosa succede se vado e premo play?
‫Bene, la piattaforma accelera rapidamente in lontananza perché sto aggiungendo cento unità ogni singolo
‫fotogramma.
‫Questo è molto.
‫Ma voglio che si muova a una velocità di circa 100 centimetri al secondo.
‫È solo un metro al secondo.
‫Non è molto veloce.
‫Allora perché va così veloce?
‫Bene, a causa del mio frame rate.
‫Bene, se fossi su un sistema più lento, si muoverebbe più lentamente.
‫E se fossi su un sistema più veloce, si muoverebbe più velocemente.
‫Non sembra avere senso.
‫Quindi parliamo dell'utilizzo del tempo Delta.
‫Che cos'è l'ora delta?
‫Bene, l'uso del tempo Delta in Unreal può dirci quanto tempo impiegava l'esecuzione di ogni fotogramma era il tempo Delta.
‫Bene, se vai al codice di Visual Studio, puoi vedere che il tempo delta è una variabile menzionata qui all'inizio
‫di Take.
‫Questo è in realtà un parametro di input.
‫È l'input per la nostra funzione.
‫Quindi possiamo usarlo qui.
‫In sostanza, come usiamo una variabile locale, possiamo usarla all'interno del corpo della funzione tick.
‫Quindi ci dice quanto tempo ha impiegato un frame per essere eseguito.
‫Ma perché è così importante?
‫Perché quando moltiplichiamo qualcosa per il tempo delta, essenzialmente rende il nostro frame rate di gioco indipendente, il che significa sostanzialmente
‫che il gioco si comporta allo stesso modo su un computer veloce o lento.
‫Quindi diamo un'occhiata a un esempio illustrativo se voglio spostare ogni secondo qualcosa di un'unità
‫a sinistra.
‫Ecco come sarebbe su macchine diverse.
‫Ho un calcolo lento.
‫Posso fare solo dieci fotogrammi al secondo su un computer veloce, che può fare 100 fotogrammi al secondo.
‫Ora la durata di quei frame è diversa.
‫Quindi sul computer lento, la durata del frame è 0. 1 di secondo.
‫Se riuscissi a inserirne solo dieci in un secondo e su un computer veloce, lo sarebbe. 01 di secondo, tanto meno perché può
‫eseguire le cose più velocemente.
‫Non ci vuole molto tempo per calcolare il frame.
‫Quindi, se moltiplico per la durata del fotogramma, moltiplico la mia unità per la durata del fotogramma.
‫Quindi lo vedrai in 1/2.
‫Quindi, dove sono stati eseguiti dieci fotogrammi, ottengo un'unità di movimento.
‫E lo stesso è vero.
‫Se ho eseguito 100 fotogrammi di esecuzione, ottengo comunque un'unità di movimento.
‫Quindi vorrei sfidarti a moltiplicare per il tempo delta.
‫Quindi quello che faremo è ricordare che possiamo moltiplicare i vettori per un valore in virgola mobile
‫per scalare quella magnitudine.
‫E il modo in cui possiamo farlo in C++ è usare l'operatore star.
‫È così che facciamo la moltiplicazione.
‫Non esiste un operatore di segno di moltiplicazione.
‫Sarebbe confuso con una X, quindi usiamo l'operatore stella per denotare la moltiplicazione.
‫E vorrei che compilassi e provassi i tuoi risultati.
‫Quindi moltiplica per delta tempo, moltiplica la velocità per delta tempo e guarda cosa succede.
‫Metti in pausa, video e prova.
‫Bene.
‫Ben tornato.
‫Quindi è la velocità della piattaforma che vogliamo che si moltiplichi qui.
‫Ora, potremmo estrarlo in una variabile separata, ma in realtà possiamo semplicemente mettere una moltiplicazione per
‫delta alla fine di quella riga, ovviamente prima del punto e virgola, perché è prima della fine
‫dell'istruzione.
‫E la cosa interessante qui è che c'è un po' di precedenza di
‫operatori qui in quanto la moltiplicazione tra la velocità della piattaforma e il tempo delta avverrà prima
‫dell'aggiunta alla posizione corrente.
‫Ora questo segue le normali regole matematiche per un elenco completo di quelle regole.
‫Non entrerò nei dettagli proprio qui, ma puoi dare un'occhiata alla pagina sull'ordine
‫delle operazioni su Wikipedia.
‫Ci sono molte regole diverse in lingue diverse, che si tratti di massa corporea, massa del letto, massa dell'animale domestico, massa
‫del letto.
‫Ci sono un sacco di acronimi diversi.
‫Quindi, qualunque cosa tu sia cresciuto usando, è quello che ti consiglierei di usare.
‫Per me era massa corporea, ma sai, in altri posti è diverso.
‫Quindi vale la pena notare che possiamo semplicemente scriverlo in questo modo.
‫Ma se volessimo assicurarci che qualcosa accada in un ordine diverso da quello, allora puoi usare
‫le parentesi per indicarlo.
‫Quindi potrei, solo per rendere le cose più chiare, metterò parentesi attorno a questa moltiplicazione solo per mostrarti che
‫è quello che succede.
‫Prima la moltiplicazione e poi l'addizione alla posizione corrente.
‫Quindi entriamo in Unreal e testiamolo.
‫Colpiremo, compileremo e, una volta terminato, premiamo play.
‫E ora vediamo le piattaforme muoversi a una velocità molto più normale perché in realtà si muove a
‫un metro al secondo, il che va bene per una piattaforma mobile.
‫Quindi puoi vedere che questo ci ha aiutato entrambi a ridurre la velocità, ma ora anche questo è un frame rate, una velocità
‫indipendente.
‫Se il mio computer si muoveva perché c'era qualcos'altro in background, questo sembrerebbe sempre
‫lo stesso e giocherebbe lo stesso nel gioco.
‫Roba fantastica.
‫Ci vediamo alla prossima lezione.