﻿1
00:00:04,080 --> 00:00:05,890
‫Ciao e bentornato.

2
00:00:05,910 --> 00:00:11,990
‫Ora stiamo spostando il nostro carro armato avanti e indietro, ma non abbiamo modo di guidarlo effettivamente.

3
00:00:12,000 --> 00:00:18,260
‫Quindi, in questo video, lavoreremo per girare effettivamente il serbatoio usando qualcosa chiamato rotazione locale.

4
00:00:18,270 --> 00:00:23,040
‫Questo è l'analogo rotazionale per aggiungere l'offset locale dell'attore.

5
00:00:23,070 --> 00:00:29,850
‫Ora aggiungi l'offset locale dell'attore aveva più parametri di input e abbiamo passato solo il primo poiché gli

6
00:00:29,850 --> 00:00:31,470
‫altri tre erano opzionali.

7
00:00:31,650 --> 00:00:35,010
‫Ma uno di quegli altri tre aveva a che fare con lo spazzamento.

8
00:00:35,010 --> 00:00:41,190
‫E discuteremo un po' di spazzare prima di continuare a implementare la rotazione.

9
00:00:41,190 --> 00:00:45,660
‫Quindi sono tornato nella documentazione per ADD Actor Local Offset.

10
00:00:45,660 --> 00:00:48,720
‫Quindi diamo un'occhiata a questi parametri di input ancora una volta.

11
00:00:48,750 --> 00:00:52,770
‫Il secondo si chiama B Sweep ed è un booleano.

12
00:00:53,160 --> 00:00:59,790
‫Ora, se scorriamo un po' più in basso e leggiamo le informazioni qui per lo sweep B, si

13
00:00:59,790 --> 00:01:07,140
‫dice se eseguiamo lo sweep verso la posizione di destinazione attivando sovrapposizioni lungo il percorso e fermandoci prima del bersaglio

14
00:01:07,140 --> 00:01:08,820
‫se bloccati da qualcosa.

15
00:01:09,180 --> 00:01:14,790
‫Continua anche dicendo che solo il componente radice viene spazzato e controllato per bloccare la collisione.

16
00:01:14,790 --> 00:01:17,430
‫I componenti del bambino si muovono senza spazzare.

17
00:01:17,700 --> 00:01:20,820
‫Se la collisione è disattivata, non ha alcun effetto.

18
00:01:21,060 --> 00:01:28,440
‫Quindi parliamo di cosa significa ora nella programmazione dei giochi, lo sweep è una tecnica eseguita dal motore, purché

19
00:01:28,440 --> 00:01:30,390
‫lo sweep sia abilitato.

20
00:01:30,570 --> 00:01:38,370
‫Se abbiamo un oggetto in movimento come una sfera rappresentata da questo cerchio, ogni fotogramma mentre questa sfera si

21
00:01:38,370 --> 00:01:42,090
‫muove, il motore esegue i controlli di scansione.

22
00:01:42,090 --> 00:01:49,740
‫Ciò significa che sta verificando se quella mossa per questo particolare fotogramma avrebbe comportato una sovrapposizione

23
00:01:49,740 --> 00:01:51,420
‫tra due oggetti.

24
00:01:51,630 --> 00:01:55,560
‫Quindi ho questo blocco qui rappresentato da questo rettangolo.

25
00:01:56,010 --> 00:01:59,580
‫Consideriamo ora che questi sono gli unici due oggetti al mondo.

26
00:01:59,580 --> 00:02:06,600
‫Quindi, mentre lo sweep è abilitato mentre la sfera si muove verso l'oggetto, il motore controlla

27
00:02:06,600 --> 00:02:09,330
‫se questi due oggetti si sovrappongono.

28
00:02:09,570 --> 00:02:16,410
‫Ora, mentre la sfera continua a muoversi, diciamo che durante uno di questi fotogrammi la sfera si sarebbe

29
00:02:16,410 --> 00:02:19,500
‫mossa in modo tale da sovrapporsi all'altro oggetto.

30
00:02:19,500 --> 00:02:26,760
‫Ora ciò che fa lo sweep abilitato è che il motore rileverà questa sovrapposizione e sposterà quella sfera indietro

31
00:02:26,790 --> 00:02:31,920
‫per quel particolare fotogramma in modo che non penetri mai effettivamente nell'oggetto.

32
00:02:31,950 --> 00:02:35,460
‫Ora non vediamo mai effettivamente la sfera penetrare nell'oggetto.

33
00:02:35,490 --> 00:02:40,530
‫Il motore cattura che si sovrappongono prima che il movimento sia effettivamente implementato.

34
00:02:40,530 --> 00:02:46,020
‫Quindi il risultato è che vediamo che la sfera si ferma poco prima di sovrapporsi.

35
00:02:46,020 --> 00:02:52,710
‫Quindi se questo rettangolo fosse un muro, per esempio, la sfera si fermerebbe sulla superficie del muro.

36
00:02:52,710 --> 00:02:55,170
‫Questo è ciò che lo spazzamento ottiene per noi.

37
00:02:55,170 --> 00:03:00,030
‫Ora la documentazione dice che se la collisione è disattivata, questo non ha alcun effetto.

38
00:03:00,030 --> 00:03:04,590
‫Quindi la collisione deve essere abilitata affinché lo sweep funzioni.

39
00:03:04,740 --> 00:03:12,090
‫Quindi, di nuovo qui in serbatoi CP nella funzione di spostamento, ecco la nostra chiamata per aggiungere l'offset locale dell'attore e

40
00:03:12,120 --> 00:03:19,110
‫se vogliamo possiamo passare qui un altro parametro di input, il secondo è lo sweep booleano in modo da poter

41
00:03:19,110 --> 00:03:20,310
‫passare true qui.

42
00:03:20,310 --> 00:03:24,540
‫Quindi compiliamo questo e vediamo l'effetto dell'abilitazione dello sweep.

43
00:03:24,540 --> 00:03:30,720
‫Ora, se premiamo play e proviamo a muoverci attraverso un muro, ad esempio, vedremo che ci muoviamo attraverso

44
00:03:30,720 --> 00:03:31,560
‫il muro.

45
00:03:31,560 --> 00:03:34,020
‫Quindi c'è qualcosa che non funziona qui.

46
00:03:34,020 --> 00:03:38,280
‫Ora diamo un'occhiata a qual è il componente del percorso per il serbatoio dello stagno BP.

47
00:03:38,280 --> 00:03:41,730
‫Ricordiamo, abbiamo utilizzato la componente capsula per il percorso.

48
00:03:41,730 --> 00:03:45,570
‫Quindi con i componenti della capsula selezionati nel serbatoio dello stagno BP.

49
00:03:45,570 --> 00:03:51,690
‫Andiamo al pannello dei dettagli e scorriamo verso il basso e vedremo qui una sezione chiamata Collisione.

50
00:03:51,690 --> 00:03:55,860
‫E qui vediamo le preimpostazioni di collisione e ha un menu a discesa.

51
00:03:55,860 --> 00:03:57,420
‫Quindi espandiamolo.

52
00:03:57,420 --> 00:04:05,010
‫Ora, le preimpostazioni di collisione possono essere impostate su un numero qualsiasi di opzioni e per impostazione predefinita vediamo sovrapposizioni tutte dinamiche.

53
00:04:05,010 --> 00:04:08,280
‫Ora, a seconda della versione di Unreal Engine che stai utilizzando.

54
00:04:08,280 --> 00:04:11,580
‫Potresti vedere qualcos'altro qui, ma possiamo cambiarlo.

55
00:04:11,580 --> 00:04:18,750
‫Se selezioniamo il menu a discesa e scegliamo blocca tutto dinamico, le opzioni in grigio sottostanti cambiano.

56
00:04:18,750 --> 00:04:25,470
‫Ricorda che eravamo in sovrapposizione tutti dinamici e qui vediamo tre colonne di caselle di controllo.

57
00:04:25,590 --> 00:04:33,240
‫Queste sono le risposte alle collisioni e la colonna a sinistra mostra un elenco di tipi di oggetti di collisione.

58
00:04:33,240 --> 00:04:37,860
‫Quindi ogni dato componente ha il proprio tipo di oggetto di collisione.

59
00:04:37,860 --> 00:04:42,840
‫Si noti che possiamo vedere il tipo di oggetto per la capsula impostato su dinamico mondiale.

60
00:04:42,840 --> 00:04:48,600
‫E quando cambiamo i preset di collisione per bloccare tutta la dinamica, vedrai che le risposte

61
00:04:48,600 --> 00:04:54,450
‫alle collisioni sono tutte controllate per bloccare in risposta a tutti gli altri tipi di oggetti di collisione.

62
00:04:54,450 --> 00:04:59,160
‫Quindi premiamo play e vediamo cosa succede quando proviamo a passare attraverso le cose.

63
00:04:59,160 --> 00:05:03,630
‫Vedrai che ci fermiamo poco prima di sovrapporci.

64
00:05:03,710 --> 00:05:04,860
‫Gli altri stagni.

65
00:05:04,880 --> 00:05:13,520
‫Ora, se sposto il serbatoio in modo da poter tentare di sovrapporci al muro e aggirare gli altri

66
00:05:13,520 --> 00:05:14,340
‫stagni.

67
00:05:14,360 --> 00:05:17,900
‫Ora, se premo play, blocco anche il muro.

68
00:05:17,900 --> 00:05:26,330
‫Quindi questo blocco preimpostato di collisione, tutto dinamico imposta la risposta alla collisione per bloccare tutti gli altri tipi di oggetti.

69
00:05:26,330 --> 00:05:32,900
‫E puoi sempre vedere il tipo di oggetto di collisione di un particolare componente selezionandolo nel pannello dei componenti

70
00:05:32,900 --> 00:05:39,590
‫e scorrendo fino alla sezione di collisione nel pannello dei dettagli e aprendo il menu a discesa per i

71
00:05:39,590 --> 00:05:40,790
‫preset di collisione.

72
00:05:40,790 --> 00:05:47,540
‫Ho selezionato la mesh di base e il suo tipo di oggetto è dinamico mondiale ed è impostato per bloccare tutto.

73
00:05:47,540 --> 00:05:54,350
‫Quindi ora vediamo che lo sweep funziona poiché abbiamo impostato i nostri preset di collisione per la composizione della capsula per bloccare

74
00:05:54,350 --> 00:05:55,490
‫tutta la dinamica.

75
00:05:55,490 --> 00:06:02,720
‫E abbiamo visto nella documentazione che solo il componente root viene spazzato e controllato per bloccare la collisione.

76
00:06:02,720 --> 00:06:06,140
‫Quindi non importa davvero su cosa siano impostati gli altri componenti.

77
00:06:06,170 --> 00:06:10,790
‫Stiamo solo verificando se il componente root sta bloccando qualcosa.

78
00:06:10,790 --> 00:06:15,800
‫Ora, un problema che ha fatto inciampare alcuni studenti è che non possono muoversi non appena hanno impostato la

79
00:06:15,800 --> 00:06:17,510
‫capsula per bloccare tutta la dinamica.

80
00:06:17,810 --> 00:06:23,750
‫Ora, una delle ragioni potrebbe essere che la tua capsula si sovrappone al pavimento.

81
00:06:23,780 --> 00:06:28,820
‫Se la capsula si sovrappone al pavimento, non sarai in grado di muoverti perché il motore

82
00:06:28,820 --> 00:06:35,390
‫non consentirà al tuo serbatoio di muoversi se il componente della capsula si sovrappone a qualcosa che è impostato per bloccare.

83
00:06:35,390 --> 00:06:41,240
‫Quindi una soluzione semplice per questo sarebbe assicurarsi che la capsula non si sovrapponga al pavimento.

84
00:06:41,720 --> 00:06:49,370
‫Ora puoi entrare nel tuo serbatoio BP e assicurarti che la tua capsula sia appena sopra le ruote qui.

85
00:06:49,370 --> 00:06:52,640
‫Vado in vista ortografica.

86
00:06:53,720 --> 00:06:56,840
‫E seleziona la mia mesh di base e abbassala.

87
00:06:56,840 --> 00:07:00,980
‫Quindi le ruote sono appena sotto il componente della capsula.

88
00:07:01,190 --> 00:07:06,470
‫Quindi ora se la tua rete è solo sul pavimento e la capsula è appena sopra la rete.

89
00:07:06,680 --> 00:07:09,010
‫Dovresti essere in grado di muoverti.

90
00:07:09,020 --> 00:07:12,110
‫Quindi vado su play e ci siamo.

91
00:07:12,740 --> 00:07:17,620
‫Quindi, ora che ci siamo tolti di mezzo, è tempo di iniziare a implementare la rotazione.

92
00:07:17,630 --> 00:07:19,520
‫Torniamo alle impostazioni del nostro progetto.

93
00:07:19,520 --> 00:07:29,060
‫Quindi andiamo a modificare le impostazioni del progetto, scorriamo verso il basso fino a input e nella sezione di input abbiamo le nostre mappature degli assi.

94
00:07:29,060 --> 00:07:30,710
‫Ora ci siamo già occupati.

95
00:07:30,710 --> 00:07:31,790
‫Vai avanti.

96
00:07:31,790 --> 00:07:40,220
‫È ora di occuparsi del prossimo chiamato Turn e Turn ha D e A assegnati dove D ha una scala di

97
00:07:40,220 --> 00:07:44,060
‫uno e A ha una scala di uno negativo.

98
00:07:44,060 --> 00:07:48,080
‫Vorremmo usare D e AX per ruotare il serbatoio.

99
00:07:48,170 --> 00:07:54,470
‫Quindi, per associare una funzione alla mappatura dell'asse di virata, abbiamo bisogno di una funzione da associare.

100
00:07:54,470 --> 00:08:02,330
‫Quindi siamo tornati nel codice di V e andrò nel file del serbatoio in modo da poter creare una funzione da collegare a

101
00:08:02,330 --> 00:08:04,100
‫quella mappatura dell'asse di virata.

102
00:08:04,100 --> 00:08:08,630
‫Ora chiamerò questa funzione vuota girare e proprio come muovere.

103
00:08:08,660 --> 00:08:12,560
‫Ha bisogno di un parametro di input float e chiameremo questo valore.

104
00:08:12,560 --> 00:08:18,530
‫Quindi abbiamo dichiarato questa funzione, definiamola e tank CP e la metterò appena sotto la

105
00:08:18,530 --> 00:08:19,790
‫funzione di spostamento.

106
00:08:19,790 --> 00:08:26,600
‫Quindi gli ho assegnato un corpo di funzione e ho bisogno del nome della classe insieme ai due punti doppi appena prima del

107
00:08:26,600 --> 00:08:27,590
‫nome della funzione.

108
00:08:27,590 --> 00:08:29,270
‫Ora abbiamo una funzione adeguata.

109
00:08:29,270 --> 00:08:31,400
‫Ora, questa non è l'unica cosa che dobbiamo fare.

110
00:08:31,430 --> 00:08:36,590
‫Dobbiamo assicurarci che questa funzione sia legata alla mappatura degli assi chiamata turn.

111
00:08:36,590 --> 00:08:44,000
‫Lo facciamo nel componente di input del giocatore di configurazione e lo facciamo proprio come abbiamo fatto per la mappatura dell'asse di spostamento in avanti.

112
00:08:44,000 --> 00:08:51,290
‫Quindi diremo componente di input del giocatore, useremo l'operatore freccia e associamo l'asse.

113
00:08:52,100 --> 00:08:58,250
‫Ora il primo parametro sarà il nome della mappatura dell'asse racchiuso in una macro di testo.

114
00:08:58,340 --> 00:09:02,420
‫Quindi diremo girare perché era il nome della mappatura dell'asse.

115
00:09:02,420 --> 00:09:05,180
‫Il prossimo è l'oggetto per cui stiamo legando la funzione.

116
00:09:05,180 --> 00:09:10,100
‫Possiamo passare questo e infine passare la funzione che vorremmo legare di nuovo.

117
00:09:10,100 --> 00:09:14,600
‫Ci serve l'indirizzo dell'operatore e sarà un turno di carro armato.

118
00:09:14,600 --> 00:09:16,550
‫Quindi è così facile.

119
00:09:16,580 --> 00:09:21,200
‫Abbiamo associato la funzione di svolta alla mappatura dell'asse di svolta.

120
00:09:21,500 --> 00:09:26,330
‫L'unica cosa rimasta è fare qualcosa nella funzione turn.

121
00:09:26,330 --> 00:09:32,390
‫Ora abbiamo visto che abbiamo l'offset locale dell'attore ADD, ma c'è un analogo rotazionale per questa funzione

122
00:09:32,390 --> 00:09:35,240
‫e si chiama rotazione locale dell'attore ADD.

123
00:09:35,240 --> 00:09:41,600
‫Ciò che fa è aggiungere una rotazione locale all'attore come suggerisce il nome, e vedrai che ci sono

124
00:09:41,600 --> 00:09:47,330
‫due diverse versioni della funzione, una che accetta un rotatore F e una che prende qualcosa

125
00:09:47,330 --> 00:09:48,530
‫chiamato F quad.

126
00:09:48,530 --> 00:09:51,140
‫Utilizzeremo la versione che richiede un rotatore F.

127
00:09:51,140 --> 00:09:53,480
‫Si chiama rotazione delta.

128
00:09:53,480 --> 00:10:00,800
‫E proprio come ADD Actor Local offset, può anche accettare un parametro sweep e gli stessi altri due parametri di

129
00:10:00,800 --> 00:10:03,170
‫input per aggiungere l'attore local offset.

130
00:10:03,170 --> 00:10:08,720
‫E questi ultimi tre parametri di input sono opzionali, proprio come aggiungi l'offset locale dell'attore.

131
00:10:08,720 --> 00:10:13,060
‫Quindi, invece di un vettore F, passeremo in un rotatore F.

132
00:10:13,070 --> 00:10:20,210
‫Ora torniamo qui nella funzione turn, se creiamo un rotatore F e chiamiamo questa rotazione delta, vedremo che se facciamo clic

133
00:10:20,210 --> 00:10:26,960
‫con il tasto destro del mouse su rotatore F e andiamo alla definizione, verremo portati a rotatore e ne

134
00:10:26,960 --> 00:10:30,410
‫vedremo tre variabili membro pubbliche qui di tipo float.

135
00:10:30,410 --> 00:10:37,250
‫Ora, proprio come il rotatore F vettore F ha solo queste tre componenti invece di X, Y e Z,

136
00:10:37,250 --> 00:10:39,140
‫abbiamo imbardata e rollio.

137
00:10:39,140 --> 00:10:42,050
‫Ora, l'imbardata è il componente che ci interessa.

138
00:10:42,050 --> 00:10:46,940
‫Dice rotazione attorno all'asse in alto tra parentesi attorno all'asse Z.

139
00:10:46,940 --> 00:10:52,370
‫E questo è l'unico tipo di rotazione che ci interessa ruotare attorno all'asse Z.

140
00:10:52,370 --> 00:10:54,500
‫È così che possiamo guidare il nostro carro armato.

141
00:10:54,500 --> 00:11:00,860
‫Ora, ti farò solo notare che ci sono più costruttori anche per il rotatore F e che

142
00:11:00,860 --> 00:11:06,110
‫l'impostazione predefinita dice di nuovo nessuna inizializzazione, proprio come con il vettore F.

143
00:11:06,110 --> 00:11:12,410
‫Quindi possiamo usare quello che accetta un singolo float e tutti i componenti verranno inizializzati su quel

144
00:11:12,410 --> 00:11:13,190
‫valore float.

145
00:11:13,220 --> 00:11:18,560
‫Ce n'è uno con tre valori float e puoi dare un'occhiata e vedere alcuni degli altri.

146
00:11:18,560 --> 00:11:25,820
‫Ora, farò anche notare che c'è un rotatore zero e, a proposito, questo è un rotatore zero statico.

147
00:11:25,820 --> 00:11:34,880
‫Ecco perché possiamo tornare al tank CP e dire qualcosa come uguale a F rotator zero rotator zero rotator è una variabile membro

148
00:11:34,880 --> 00:11:42,170
‫statica e puoi accedere a funzioni membro statiche e variabili come questa specificando il nome della classe con

149
00:11:42,170 --> 00:11:47,960
‫l'operatore di risoluzione dell'ambito e facendo riferimento a quello statico variabile o funzione per

150
00:11:47,960 --> 00:11:48,440
‫nome.

151
00:11:48,440 --> 00:11:50,180
‫È quello che stiamo facendo qui con te.

152
00:11:50,180 --> 00:11:53,060
‫Le statistiche di gioco ottengono i secondi delta del mondo sono statici.

153
00:11:53,310 --> 00:11:59,670
‫Funzione, il che significa che non abbiamo bisogno di un'istanza reale della classe statica di gioco del gioco

154
00:11:59,670 --> 00:12:02,230
‫per poter accedere a quella funzione statica.

155
00:12:02,250 --> 00:12:04,160
‫Esiste già.

156
00:12:04,170 --> 00:12:06,930
‫Lo stesso con zero rotatore e zero vettore.

157
00:12:07,080 --> 00:12:14,010
‫Quindi chiuderò il rotatore h e abbiamo questa rotazione delta ed è inizializzato su un rotatore

158
00:12:14,010 --> 00:12:14,700
‫zero.

159
00:12:14,730 --> 00:12:20,280
‫Ora il tuo passo e il tuo ruolo sono azzerati proprio come X, Y e Z sono azzerati per il vettore F.

160
00:12:20,280 --> 00:12:22,920
‫Quindi dovremo cambiare quel tuo componente.

161
00:12:22,920 --> 00:12:29,460
‫Quindi, proprio come ho fatto con la nostra posizione delta nella funzione MOV, creiamo uno pseudocodice per le rotazioni

162
00:12:29,460 --> 00:12:30,120
‫delta.

163
00:12:30,120 --> 00:12:36,690
‫Sì, vorremo che tutti voi siate impostati su un valore scalato in base al tempo Delta, ovviamente, perché vogliamo che questa svolta

164
00:12:36,690 --> 00:12:42,570
‫sia indipendente dal frame rate, ma abbiamo anche bisogno di una sorta di velocità di svolta che possiamo chiamare questa

165
00:12:42,570 --> 00:12:43,560
‫velocità di svolta.

166
00:12:43,560 --> 00:12:49,890
‫Quindi, una volta impostato, sì, possiamo aggiungere quella rotazione locale che ruoterà l'attore in base al rotatore

167
00:12:49,890 --> 00:12:54,630
‫F ogni fotogramma e che verrà ridimensionato in base al valore.

168
00:12:54,630 --> 00:12:59,640
‫Quindi sarà zero se non stiamo premendo alcun tasto e avrà un valore se stiamo premendo DX

169
00:12:59,640 --> 00:13:00,320
‫e ax.

170
00:13:00,330 --> 00:13:02,190
‫Quindi ora hai una sfida.

171
00:13:02,190 --> 00:13:06,090
‫Funzionerà proprio come aggiungere l'offset locale dell'attore.

172
00:13:06,120 --> 00:13:09,000
‫L'unica differenza è che ora stiamo ruotando l'attore.

173
00:13:09,000 --> 00:13:14,820
‫Quindi, dal momento che abbiamo bisogno di una sorta di velocità di rotazione per ruotare l'attore, creerai una variabile di

174
00:13:14,820 --> 00:13:20,550
‫velocità di rotazione, la trasformerai in float e la inserirai nella sezione privata proprio accanto alla variabile di velocità.

175
00:13:20,550 --> 00:13:25,560
‫Esponi questa variabile con la tua proprietà e scegli i nuovi identificatori di proprietà appropriati.

176
00:13:25,560 --> 00:13:32,490
‫Ora nella funzione turn imposterai in particolare la rotazione delta, ci preoccupiamo che il tuo componente imposti il

177
00:13:32,490 --> 00:13:41,280
‫valore uguale a value moltiplicato per la nostra variabile di turn rate e moltiplichiamo anche per delta time e quindi sei pronto per

178
00:13:41,280 --> 00:13:48,780
‫chiamare add attore locale rotazione passando in questo f rotator ora per il secondo parametro vai avanti e passa in

179
00:13:48,780 --> 00:13:56,880
‫true per l'input B sweep poiché vogliamo eseguire lo sweep durante la rotazione, mettere in pausa il video e implementare la

180
00:13:56,880 --> 00:13:59,190
‫rotazione per il serbatoio ora.

181
00:14:02,110 --> 00:14:02,500
‫Bene.

182
00:14:02,500 --> 00:14:04,630
‫Quindi questo sarà abbastanza semplice.

183
00:14:04,630 --> 00:14:07,360
‫Abbiamo solo bisogno di una variabile di turn rate.

184
00:14:07,390 --> 00:14:14,440
‫Ora andrò in tank appena sotto velocità e creerò una velocità di virata flottante.

185
00:14:14,590 --> 00:14:18,640
‫Ora probabilmente lo inizializzi su un certo valore e va bene.

186
00:14:18,640 --> 00:14:24,040
‫Se è diverso da quello che sto scegliendo, andrò con 45 F e vedrò come funziona.

187
00:14:24,040 --> 00:14:29,150
‫Ma lo esporremo ai progetti in modo da poterlo modificare durante lo sviluppo.

188
00:14:29,170 --> 00:14:35,620
‫Ora mi piacerebbe che fosse modificato ovunque e lo inserirò nella stessa categoria movimento della velocità.

189
00:14:35,620 --> 00:14:41,320
‫Quindi andrò avanti e ruberò questa tua proprietà e la incollerò proprio qui sopra, gira a destra in modo che

190
00:14:41,320 --> 00:14:42,180
‫la metta ovunque.

191
00:14:42,190 --> 00:14:45,280
‫Movimento di categoria ora e CP serbatoio.

192
00:14:45,310 --> 00:14:48,190
‫Sono pronto a dare il via alla rotazione Delta.

193
00:14:48,190 --> 00:14:50,320
‫Quindi diremo rotazione delta.

194
00:14:50,650 --> 00:14:51,400
‫Sì.

195
00:14:51,790 --> 00:14:57,060
‫E lo imposteremo uguale a value times, turn rate times, delta time.

196
00:14:57,070 --> 00:15:04,120
‫E ovviamente possiamo ottenere il tempo Delta con le statistiche di gioco di U, ottenere i secondi delta del mondo che passano in

197
00:15:04,120 --> 00:15:06,340
‫questo come oggetto del contesto mondiale.

198
00:15:06,460 --> 00:15:08,350
‫Quindi lo incollerò proprio lì.

199
00:15:08,470 --> 00:15:12,220
‫Ora so che il mio pseudocodice non corrisponde esattamente.

200
00:15:12,220 --> 00:15:13,270
‫È nell'ordine sbagliato.

201
00:15:13,270 --> 00:15:14,830
‫Il tempo delta è nel mezzo qui.

202
00:15:14,830 --> 00:15:20,440
‫Non importa perché quando si moltiplicano tre valori insieme, è possibile moltiplicarli in qualsiasi ordine e ottenere

203
00:15:20,440 --> 00:15:21,940
‫comunque lo stesso risultato.

204
00:15:21,940 --> 00:15:27,460
‫Quindi, nel caso te lo stessi chiedendo, la matematica risulterà comunque la stessa se moltiplichi questi tre

205
00:15:27,460 --> 00:15:29,350
‫valori in un ordine diverso.

206
00:15:29,350 --> 00:15:30,910
‫Quindi non preoccuparti troppo.

207
00:15:30,910 --> 00:15:32,830
‫Ora abbiamo la rotazione delta.

208
00:15:32,830 --> 00:15:41,860
‫L'unica cosa rimasta da fare è chiamare la rotazione locale dell'attore aggiuntivo, e stiamo passando in rotazione delta e per il

209
00:15:41,950 --> 00:15:47,290
‫secondo input passeremo in true per abilitare lo sweep durante la rotazione.

210
00:15:47,290 --> 00:15:48,670
‫Quindi compiliamo questo.

211
00:15:48,820 --> 00:15:50,740
‫Va bene, ora siamo compilati.

212
00:15:50,740 --> 00:15:57,190
‫Potresti notare in un paio dei prossimi video che in queste linee mancano zero vettore e zero

213
00:15:57,190 --> 00:15:57,700
‫rotatore.

214
00:15:57,700 --> 00:16:03,010
‫Questo perché ho iniziato con questi inizializzati e mi sono reso conto in seguito che questi

215
00:16:03,010 --> 00:16:05,890
‫dovrebbero probabilmente essere inizializzati almeno con valori zero.

216
00:16:05,890 --> 00:16:12,070
‫Quindi non preoccuparti se vedi queste linee in seguito che appaiono così sull'inizializzazione, mantieni il tuo vettore zero e

217
00:16:12,070 --> 00:16:16,690
‫il tuo zero rotatore e vedrai che lo catturerò in un prossimo video futuro.

218
00:16:16,690 --> 00:16:17,770
‫Quindi non preoccuparti.

219
00:16:17,770 --> 00:16:21,430
‫Se non vedi questi quelli di inizializzazione, dovrebbero essere lì.

220
00:16:21,430 --> 00:16:23,050
‫E siamo tornati nell'editor.

221
00:16:23,050 --> 00:16:30,970
‫Premiamo play e userò il tasto D e stiamo ruotando e il tasto A mi fa ruotare indietro nell'altro modo

222
00:16:30,970 --> 00:16:33,790
‫e possiamo anche muoverci avanti e indietro.

223
00:16:33,790 --> 00:16:39,570
‫Quindi ora che possiamo ruotare e andare avanti, abbiamo la possibilità di muoverci in tutto il mondo.

224
00:16:39,580 --> 00:16:41,890
‫Questo è un grande traguardo.

225
00:16:41,890 --> 00:16:47,620
‫Ora mi sto muovendo abbastanza lentamente, ma va bene perché posso selezionare il mio carro armato e posso cercare

226
00:16:47,620 --> 00:16:53,230
‫la categoria di movimento e cambiare la velocità di virata a qualcosa di più alto, ad esempio 90.

227
00:16:53,230 --> 00:16:54,760
‫Quindi andiamo avanti e premiamo play.

228
00:16:55,460 --> 00:16:57,630
‫Ed è un po' più veloce.

229
00:16:57,650 --> 00:17:00,110
‫Ora, se pensi che questo sia ancora un po' lento.

230
00:17:00,140 --> 00:17:02,330
‫Ovviamente puoi regolarli.

231
00:17:02,330 --> 00:17:05,570
‫Quindi selezionerò di nuovo il -- tank.

232
00:17:05,570 --> 00:17:08,090
‫E invece di 400, facciamo 800.

233
00:17:08,090 --> 00:17:08,720
‫Perché no?

234
00:17:08,750 --> 00:17:11,840
‫Invece di 90, andiamo a dire 120.

235
00:17:12,260 --> 00:17:16,160
‫Ora, se premo play, sono un po' più veloce.

236
00:17:16,160 --> 00:17:18,800
‫Quindi questo sembra davvero, davvero buono.

237
00:17:18,800 --> 00:17:23,390
‫Quindi, guardando indietro alla pianta della sezione, ora abbiamo un carro armato che può muoversi in tutto il mondo.

238
00:17:23,390 --> 00:17:29,300
‫Quel primo punto elenco è definitivamente spuntato e stiamo gestendo il movimento WASD.

239
00:17:29,300 --> 00:17:32,510
‫Non stiamo ancora gestendo l'input del mouse, ma ci arriveremo.

240
00:17:32,510 --> 00:17:35,870
‫Ma siamo un passo più vicini al completamento di questo gioco.

241
00:17:35,870 --> 00:17:42,170
‫Quindi, in sintesi, abbiamo imparato cos'è lo spazzamento e come possiamo consentirlo in modo che i nostri oggetti non si passino

242
00:17:42,170 --> 00:17:43,130
‫l'uno attraverso l'altro.

243
00:17:43,130 --> 00:17:49,760
‫Abbiamo aggiunto una rotazione locale degli attori e l'abbiamo fatto implementando una velocità di rotazione che potevamo regolare nei

244
00:17:49,760 --> 00:17:50,210
‫dettagli.

245
00:17:50,210 --> 00:17:53,750
‫Pannello nell'editor per rendere un po' più semplice lo sviluppo.

246
00:17:53,750 --> 00:17:54,500
‫Ottimo lavoro.

247
00:17:54,500 --> 00:17:56,480
‫Ora stiamo spostando il carro armato in tutto il mondo.

248
00:17:56,480 --> 00:17:57,770
‫Ci vediamo nel prossimo video.

