﻿1
00:00:04,370 --> 00:00:05,300
‫Ciao e Benvenuto.

2
00:00:05,300 --> 00:00:10,190
‫In questa lezione faremo la nostra mossa, faremo un po' di movimento, spuntando una casella.

3
00:00:10,190 --> 00:00:14,570
‫Gli consentiremo di muoversi e muoversi a velocità costante.

4
00:00:14,810 --> 00:00:19,370
‫E questa volta lo faremo usando alcune funzioni di libreria dall'interno.

5
00:00:19,370 --> 00:00:19,970
‫Irreale.

6
00:00:20,210 --> 00:00:24,860
‫Quindi metteremo alla prova tutta la nostra conoscenza di testa di file e include.

7
00:00:24,860 --> 00:00:26,510
‫Entriamo e vediamo come funziona.

8
00:00:27,470 --> 00:00:34,610
‫Quindi il modo in cui voglio che questa mossa funzioni è che voglio che si sposti senza intoppi da dove è iniziata a

9
00:00:34,610 --> 00:00:38,510
‫un offset target per un periodo di un certo numero di secondi.

10
00:00:38,510 --> 00:00:43,610
‫Quindi il modo in cui avremo bisogno di configurarlo è aggiungere alcune nuove proprietà nel file di intestazione.

11
00:00:43,610 --> 00:00:48,950
‫Quindi iniziamo aggiungendo una sezione privata all'intestazione del

12
00:00:48,950 --> 00:00:58,850
‫file e quindi aggiungeremo una nuova proprietà che verrà aggiunta ovunque, che definirà l'offset, lo spostamento offset.

13
00:00:59,090 --> 00:01:03,410
‫Quindi quanto lontano dovrebbe spostarsi questo motore quando attivato.

14
00:01:03,890 --> 00:01:08,570
‫Quindi il modo in cui lo faremo, utilizzerà un vettore F e lo chiamerò offset

15
00:01:08,600 --> 00:01:11,780
‫di spostamento in modo da non dargli un valore predefinito.

16
00:01:12,020 --> 00:01:13,400
‫Lo faremo nell'editor.

17
00:01:13,940 --> 00:01:19,310
‫Quindi creerò un'altra proprietà U che verrà nuovamente aggiunta ovunque, che

18
00:01:19,310 --> 00:01:23,780
‫sarà la quantità di tempo necessaria per spostarsi sull'obiettivo.

19
00:01:24,140 --> 00:01:29,030
‫Quindi faremo in modo che sia un galleggiante, che è il tempo di movimento.

20
00:01:29,830 --> 00:01:33,140
‫Lo imposterò su un valore predefinito di, diciamo, 4 secondi.

21
00:01:33,440 --> 00:01:39,680
‫Ora, c'è un'altra cosa che voglio inserire qui, che per ora è un booleano, che

22
00:01:39,680 --> 00:01:47,000
‫ci permetterà di attivare la mossa in modo che si sposti verso il basso quando attiviamo questo booleano.

23
00:01:47,000 --> 00:01:52,700
‫Quindi creiamo di nuovo un'altra nuova proprietà, la modifichiamo ovunque in modo da poterla aggiungere anche mentre stiamo

24
00:01:52,700 --> 00:01:53,360
‫giocando.

25
00:01:53,780 --> 00:02:00,860
‫Questo sarà un booleano che dice che dovrebbe spostarsi e per impostazione predefinita sarà impostato su false.

26
00:02:01,220 --> 00:02:07,640
‫Quindi, quando spuntiamo questo nell'editor, quando stiamo giocando, andrà e si sposterà al suo offset di

27
00:02:07,640 --> 00:02:08,600
‫spostamento target.

28
00:02:08,780 --> 00:02:13,310
‫In precedenza, quando avevamo un componente in movimento, eseguivamo tutti i passaggi manualmente.

29
00:02:13,310 --> 00:02:16,460
‫Ma voglio mostrarti che in realtà ci sono alcune funzionalità integrate da fare.

30
00:02:16,460 --> 00:02:23,330
‫Molti dei calcoli di cui abbiamo bisogno sono integrati direttamente in Unreal e c'è anche una funzione chiamata

31
00:02:23,330 --> 00:02:24,620
‫V interpreta costante.

32
00:02:24,830 --> 00:02:28,460
‫E cosa c'è di interessante, diamo un'occhiata alle osservazioni.

33
00:02:28,460 --> 00:02:36,500
‫Quindi interpolare un vettore da un vettore corrente a un vettore target usando un passo costante.

34
00:02:36,890 --> 00:02:43,880
‫Quindi ciò significa che nel tempo ci sposteremo dalla corrente all'obiettivo a una certa velocità, e lo

35
00:02:43,880 --> 00:02:47,300
‫farà costantemente, il che suona esattamente come vogliamo.

36
00:02:47,300 --> 00:02:52,160
‫Vogliamo spostarci dalla nostra posizione attuale a una posizione di offset target a velocità costante.

37
00:02:52,760 --> 00:02:57,140
‫Ora puoi vedere che dai un'occhiata alla sintassi di questa funzione.

38
00:02:57,140 --> 00:02:59,990
‫Puoi vedere che ha un tipo di ritorno di vettore.

39
00:02:59,990 --> 00:03:03,380
‫Quindi questa è la nuova posizione che sta interpolando.

40
00:03:03,860 --> 00:03:06,590
‫Quindi ha due ingressi.

41
00:03:06,590 --> 00:03:14,540
‫Abbiamo un vettore F corrente e per ora non preoccuparti degli altri simboli attorno a questo effetto, solo la

42
00:03:14,810 --> 00:03:21,650
‫cosa importante è che è un fattore corrente e quindi l'obiettivo che vogliamo che alla

43
00:03:22,250 --> 00:03:31,460
‫fine raggiunga, quindi ha il Delta tempo, quindi lo usa per rendere indipendente il frame rate del movimento e la velocità di

44
00:03:31,460 --> 00:03:32,120
‫interpolazione.

45
00:03:32,120 --> 00:03:37,040
‫Quindi quanto velocemente dovremmo spostarci dalla nostra posizione attuale all'obiettivo?

46
00:03:37,220 --> 00:03:45,500
‫Ora noterai che qui sopra nella documentazione in realtà ha una sezione che dice include e questo ti dice la

47
00:03:45,500 --> 00:03:51,740
‫riga di inclusione di cui avrai bisogno nel tuo file C++ per poter usare questa

48
00:03:51,740 --> 00:03:52,220
‫funzione.

49
00:03:52,220 --> 00:04:00,770
‫E come abbiamo visto nel video precedente, la riga di inclusione ci consente di copiare le definizioni da

50
00:04:00,770 --> 00:04:02,240
‫questo particolare file.

51
00:04:02,450 --> 00:04:05,930
‫E una delle definizioni è la definizione di questa funzione.

52
00:04:05,930 --> 00:04:13,220
‫Quindi ci consente di utilizzare questa costante di intercettazione V per ora la V davanti a questa funzione significa sostanzialmente

53
00:04:13,220 --> 00:04:15,110
‫che esegue l'interpolazione sui vettori.

54
00:04:15,110 --> 00:04:20,660
‫Ecco perché si chiama v interpret al contrario di altre funzioni di interpolazione che sono disponibili anche in

55
00:04:20,930 --> 00:04:22,220
‫questo file di libreria.

56
00:04:22,490 --> 00:04:24,080
‫Quindi diamo un'occhiata a come lo useremmo.

57
00:04:24,080 --> 00:04:29,810
‫Prima di tutto, copieremo la riga di inclusione dalla documentazione e andremo nel nostro ACP

58
00:04:29,810 --> 00:04:34,280
‫di spostamento dove vogliamo implementarlo nel corpo del componente tick.

59
00:04:34,700 --> 00:04:38,600
‫Ma includono che non includiamo all'interno del corpo del componente tick.

60
00:04:38,600 --> 00:04:41,630
‫Dobbiamo fare le inclusioni tutte nella parte superiore del file.

61
00:04:42,170 --> 00:04:44,180
‫Quindi è lì che metterò il mio.

62
00:04:44,190 --> 00:04:47,620
‫Metterò il mio dopo l'inclusione di spostare un punto h.

63
00:04:47,630 --> 00:04:54,050
‫Quindi inseriremo e includeremo per la matematica barra in avanti unreal math utility dot h.

64
00:04:54,830 --> 00:04:59,870
‫Ora quello che possiamo fare è usare effettivamente la funzione all'interno del nostro componente tick.

65
00:04:59,870 --> 00:05:03,780
‫Eliminiamo semplicemente il codice che abbiamo già e spuntiamo compila.

66
00:05:04,020 --> 00:05:09,030
‫Perché lo stavamo usando per capire come chiamare le funzioni su altri attori.

67
00:05:10,230 --> 00:05:17,130
‫E quello che dobbiamo fare è se scorri verso l'alto, puoi vedere il modo per chiamare questo è f matematica, due punti,

68
00:05:17,130 --> 00:05:18,700
‫V, toccando costante a.

69
00:05:18,750 --> 00:05:27,180
‫Quindi stiamo facendo questo operatore due punti e due punti che guarda all'interno della classe di matematica F, che

70
00:05:27,180 --> 00:05:29,880
‫organizza insieme tutte queste utilità matematiche.

71
00:05:30,360 --> 00:05:33,110
‫Quindi faremo matematica F.

72
00:05:33,330 --> 00:05:34,220
‫Colon.

73
00:05:35,430 --> 00:05:41,370
‫E qui puoi vedere un sacco di completamento automatico in arrivo per diverse funzioni matematiche incluse in quel file

74
00:05:41,370 --> 00:05:44,580
‫di intestazione che abbiamo appena incluso in questo file.

75
00:05:44,790 --> 00:05:47,960
‫Quindi puoi dare un'occhiata, vedere che tutte le cose interessanti sono qui.

76
00:05:47,960 --> 00:05:55,580
‫Riesco a vedere un mucchio di interpolazioni e interpolazioni circolari ecc. ma volevamo che la v interpretasse la costante.

77
00:05:55,990 --> 00:06:03,390
‫Possiamo premere tab per completarlo e quindi aprire alcune parentesi e possiamo vedere gli argomenti che dobbiamo

78
00:06:03,390 --> 00:06:08,910
‫passare nella corrente, il tempo delta target e la velocità di intercettazione.

79
00:06:09,330 --> 00:06:13,620
‫Quindi iniziamo a creare alcune variabili per contenere alcune di queste.

80
00:06:14,310 --> 00:06:21,960
‫Quindi, prima di tutto, abbiamo bisogno di un vettore F, che sarà la nostra posizione attuale, e non

81
00:06:21,960 --> 00:06:23,350
‫lo imposteremo ancora.

82
00:06:23,370 --> 00:06:31,200
‫Quindi avremo un vettore F per la posizione target e quindi otterremo un galleggiante per la

83
00:06:31,200 --> 00:06:32,040
‫velocità.

84
00:06:33,150 --> 00:06:38,070
‫E dovremo calcolare ciascuno di questi individualmente per capire come possiamo realizzare questo

85
00:06:38,070 --> 00:06:38,460
‫movimento.

86
00:06:38,640 --> 00:06:42,390
‫Quindi la posizione attuale sarà relativamente semplice.

87
00:06:42,420 --> 00:06:46,410
‫Dobbiamo ottenere la posizione attuale dell'attore proprietario.

88
00:06:46,440 --> 00:06:47,130
‫Allora come lo facciamo?

89
00:06:47,130 --> 00:06:50,070
‫Sostituiamo questo punto e virgola con un segno di uguale.

90
00:06:50,460 --> 00:06:56,230
‫Quindi andiamo a fare una coppia di parentesi per ottenere il proprietario che faremo con Arrow.

91
00:06:56,370 --> 00:07:05,280
‫Quindi chiameremo una funzione sull'attore proprietario e otterremo la posizione dell'attore e poi un paio di parentesi e un

92
00:07:05,760 --> 00:07:08,310
‫punto e virgola per terminarlo.

93
00:07:08,640 --> 00:07:12,330
‫Quindi questo ci fornisce la posizione attuale dell'attore proprietario.

94
00:07:12,870 --> 00:07:14,790
‫Ora, che dire della nostra posizione di destinazione?

95
00:07:15,030 --> 00:07:18,390
‫Sappiamo che abbiamo una proprietà chiamata Move Offset.

96
00:07:18,780 --> 00:07:20,760
‫Quindi sarà coinvolto qui.

97
00:07:21,120 --> 00:07:26,400
‫Ma abbiamo bisogno di aggiungere la posizione originale a questo spostamento offset.

98
00:07:26,910 --> 00:07:32,580
‫Quindi, per questo, dobbiamo catturare la posizione originale all'inizio del gioco.

99
00:07:32,940 --> 00:07:34,830
‫Quindi abbiamo bisogno di un archivio variabile.

100
00:07:34,830 --> 00:07:35,940
‫Quindi passiamo al nostro esercito.

101
00:07:35,970 --> 00:07:38,970
‫H E non sarà una modifica da nessuna parte.

102
00:07:38,970 --> 00:07:46,320
‫Quindi lo metterò sotto proprietà valore, sarà un vettore F chiamato posizione originale.

103
00:07:47,280 --> 00:07:50,360
‫Non lo imposteremo su nulla qui che andremo oltre nei nostri film.

104
00:07:50,360 --> 00:07:57,630
‫CP In Begin Play, rimuovi questa riga di commento e inserisci il nostro codice, che

105
00:07:58,290 --> 00:08:08,610
‫sarà che la posizione originale è uguale a ottenere la freccia tra parentesi del proprietario per ottenere la posizione dell'attore in questo modo.

106
00:08:08,850 --> 00:08:13,050
‫Quindi ora che abbiamo catturato la nostra posizione originale e abbiamo iniziato a giocare, possiamo usarla nella tecnologia.

107
00:08:13,380 --> 00:08:21,840
‫Quindi vai in tick e impostiamo la nostra posizione di destinazione uguale alla posizione originale più l'offset di spostamento.

108
00:08:21,840 --> 00:08:23,340
‫Quindi questa è la nostra posizione di destinazione.

109
00:08:23,880 --> 00:08:29,550
‫E infine, in velocità, beh, questa è essenzialmente la distanza che dobbiamo percorrere divisa

110
00:08:29,550 --> 00:08:32,550
‫per il tempo che dobbiamo percorrere.

111
00:08:32,580 --> 00:08:38,760
‫Quindi, se abbiamo una posizione target e abbiamo una posizione originale, dobbiamo trovare la distanza

112
00:08:38,760 --> 00:08:44,970
‫tra questi due, cosa che possiamo fare con una colonna vettoriale f, distanza dei due punti.

113
00:08:45,300 --> 00:08:54,450
‫Quindi passiamo alle parentesi, la posizione originale e la posizione di destinazione.

114
00:08:55,050 --> 00:08:58,230
‫Quindi questo ci dà la distanza tra questi due vettori.

115
00:08:58,230 --> 00:09:05,130
‫E poi lo divideremo per quello che avevamo in più e ce ne andremo chiamato tempo di spostamento.

116
00:09:05,850 --> 00:09:08,700
‫Quindi questo ci dà la velocità alla quale dovremmo muoverci.

117
00:09:09,360 --> 00:09:13,650
‫E ora possiamo usarli come argomenti per la nostra costante di intercettazione V.

118
00:09:14,070 --> 00:09:20,430
‫Quindi abbiamo prima di tutto, dobbiamo dargli la posizione corrente e poi la posizione di destinazione.

119
00:09:21,210 --> 00:09:27,180
‫Quindi diremo che è il tempo delta, che è già solo un parametro nel componente tick.

120
00:09:27,180 --> 00:09:28,530
‫Quindi dobbiamo solo passarlo.

121
00:09:29,580 --> 00:09:31,800
‫E poi abbiamo la velocità di intercettazione.

122
00:09:31,890 --> 00:09:36,570
‫Quindi passeremo alla velocità come un punto e virgola alla fine di quella linea.

123
00:09:37,230 --> 00:09:40,350
‫E questa è essenzialmente la nuova posizione.

124
00:09:40,350 --> 00:09:49,110
‫Quindi memorizziamolo in un nuovo vettore variabile chiamato nuova posizione uguale a questo.

125
00:09:49,530 --> 00:09:49,890
‫Freddo.

126
00:09:50,520 --> 00:09:54,270
‫Ora, dobbiamo fare qualcosa con quella nuova location perché non va bene averla

127
00:09:54,280 --> 00:09:57,720
‫calcolata, in realtà abbiamo bisogno di spostare l'attore nella nuova location.

128
00:09:58,380 --> 00:09:59,320
‫Quindi è quello che faremo.

129
00:09:59,340 --> 00:10:03,690
‫Lo chiameremo su get Owner così possiamo fare un get own.

130
00:10:04,730 --> 00:10:06,380
‫Freccia tra parentesi.

131
00:10:06,770 --> 00:10:15,590
‫E poi faremo una location per l'attore sul set e passeremo nella nuova location in questo modo e avremo un punto e virgola

132
00:10:15,590 --> 00:10:17,510
‫alla fine della linea.

133
00:10:18,110 --> 00:10:20,720
‫Quindi andiamo avanti e compiliamo questo e vediamo se funziona.

134
00:10:21,080 --> 00:10:24,470
‫Quindi, se andiamo nel dungeon, selezioniamo il muro che vogliamo spostare.

135
00:10:24,500 --> 00:10:30,530
‫Ora puoi vedere che il componente mover ha un offset di spostamento, che vorrò

136
00:10:30,530 --> 00:10:35,150
‫fare nella direzione Z, e penso che farò -600.

137
00:10:36,050 --> 00:10:38,780
‫E poi il tempo di spostamento, 4 secondi, dovrebbe andare bene.

138
00:10:38,930 --> 00:10:42,860
‫Quindi salviamolo e poi premiamo play e vediamo se si muove.

139
00:10:43,130 --> 00:10:43,960
‫Quindi non si muove.

140
00:10:44,000 --> 00:10:49,790
‫E c'è un errore nel registro di output che dice che la mobilità dell'attore è stata impostata su statica, motivo per cui

141
00:10:50,090 --> 00:10:51,110
‫non può muoversi.

142
00:10:51,470 --> 00:10:59,720
‫Quindi, se selezioniamo di nuovo l'attore e osserviamo le sue impostazioni di mobilità, puoi vedere che le impostazioni di mobilità del componente mesh

143
00:10:59,720 --> 00:11:03,890
‫statico, quindi seleziona il componente mesh statico, quindi guarda la mobilità.

144
00:11:03,890 --> 00:11:05,600
‫Puoi vederlo impostato su campioni statici.

145
00:11:05,630 --> 00:11:06,470
‫Non è permesso muoversi.

146
00:11:06,850 --> 00:11:09,980
‫Passiamo a mobile perché vogliamo che si muova.

147
00:11:10,370 --> 00:11:11,750
‫E poi andiamo avanti e premiamo play.

148
00:11:11,990 --> 00:11:18,120
‫Ora puoi vedere nell'oscurità che la guerra stava finendo, il che è perfetto.

149
00:11:18,170 --> 00:11:23,470
‫Penso che abbiamo una mossa da qualche altra parte, come visto su questo pilastro qui che sta anche cercando di muoversi.

150
00:11:23,480 --> 00:11:24,470
‫Quindi non facciamolo.

151
00:11:24,740 --> 00:11:28,810
‫Eliminiamo la mossa, un componente che abbiamo aggiunto lì solo per il test.

152
00:11:29,690 --> 00:11:32,480
‫E non dovrebbe darci errori nel registro di output.

153
00:11:32,480 --> 00:11:38,270
‫Se andiamo avanti nella hit play ora, dovremmo solo che quel muro scenda nella sua posizione target.

154
00:11:38,480 --> 00:11:42,850
‫Quindi ti sfidiamo a farlo muovere con il booleano che abbiamo creato di tua proprietà.

155
00:11:42,860 --> 00:11:48,710
‫Quindi avvolgerai il codice in un'istruzione if appropriata e il codice appropriato in modo che

156
00:11:48,710 --> 00:11:52,460
‫sposti la piattaforma solo quando quel booleano è vero.

157
00:11:53,090 --> 00:11:58,490
‫E poi ricompilare il codice e riprodurre un'espulsione usando F otto, quindi cambiare il booleano e osservare

158
00:11:58,490 --> 00:12:02,390
‫il plat e vedere se si muove quando controlli quel booleano.

159
00:12:02,390 --> 00:12:04,160
‫Quindi metti in pausa il video e prova.

160
00:12:07,290 --> 00:12:07,710
‫Bene.

161
00:12:07,710 --> 00:12:08,430
‫Ben tornato.

162
00:12:08,460 --> 00:12:14,790
‫Quindi andiamo e avvolgiamo questa componente tecnologica in una dichiarazione if, non super, ma tutto il resto che

163
00:12:14,790 --> 00:12:15,300
‫faremo.

164
00:12:15,300 --> 00:12:24,390
‫If dovrebbe spostare e aprire alcune parentesi e spostare tutto questo codice ricordando di indentarlo di un livello perché siamo tra parentesi

165
00:12:24,390 --> 00:12:29,550
‫e vogliamo mostrare che questo verrebbe eseguito solo all'interno dell'istruzione if.

166
00:12:29,550 --> 00:12:36,450
‫Semplifica la lettura di tutti gli undici Taft compilati e quindi dovremmo essere in grado di andare e

167
00:12:36,450 --> 00:12:42,060
‫premere play e premere F8 per espellere se abbiamo catturato il nostro mouse.

168
00:12:42,720 --> 00:12:49,110
‫E poi andremo a dare un'occhiata al nostro profilo e cercheremo di trovare il muro.

169
00:12:49,410 --> 00:12:56,310
‫Oppure possiamo semplicemente fare clic nella scena e quindi selezionare la nostra mossa un componente e controllare dovrebbe muoversi

170
00:12:56,310 --> 00:13:00,300
‫e vanno, il muro inizia a muoversi quando ciò accade.

171
00:13:00,570 --> 00:13:01,290
‫Roba fantastica.

172
00:13:01,290 --> 00:13:03,330
‫Ci vediamo alla prossima lezione.

