﻿1
00:00:04,500 --> 00:00:05,370
‫Ciao e Benvenuto.

2
00:00:05,370 --> 00:00:10,950
‫In questa lezione, installeremo un grabber in modo da poter effettivamente prendere la nostra statua

3
00:00:10,950 --> 00:00:15,090
‫di gargoyle e portarla in giro con noi davanti a noi.

4
00:00:15,390 --> 00:00:17,400
‫Immergiamoci e vediamo come lo facciamo.

5
00:00:18,180 --> 00:00:24,330
‫Quindi è tempo per noi di iniziare a chiamare questa allocazione di componenti grab con una rotazione.

6
00:00:24,570 --> 00:00:26,760
‫Ora, come ho detto prima, ci sono in realtà due parti in questo.

7
00:00:26,760 --> 00:00:34,050
‫Dobbiamo afferrare il componente e poi impostare la posizione e la rotazione del target in modo

8
00:00:34,440 --> 00:00:36,000
‫che si muova.

9
00:00:36,210 --> 00:00:37,440
‫Quindi prima le cose.

10
00:00:37,440 --> 00:00:44,310
‫Nella nostra funzione di cattura, avremo bisogno di un puntatore al nostro handle di fisica.

11
00:00:44,730 --> 00:00:50,760
‫Quindi copierò la riga da Begin Play e andrò al grabber e lo inserirò

12
00:00:50,760 --> 00:00:51,510
‫qui.

13
00:00:51,750 --> 00:00:55,710
‫E per proteggerci da questo essere nullo.

14
00:00:55,980 --> 00:00:57,270
‫Ebbene, cosa dovrebbe succedere?

15
00:00:57,570 --> 00:01:00,270
‫Bene, in realtà, non c'è niente che vogliamo fare.

16
00:01:00,270 --> 00:01:02,820
‫Se non abbiamo una maniglia fisica, non possiamo afferrare nulla.

17
00:01:03,270 --> 00:01:09,450
‫Quindi potremmo inserire l'intero corpo di questa funzione grab in un'istruzione if, ma può sembrare un po'

18
00:01:09,450 --> 00:01:10,170
‫disordinato.

19
00:01:10,200 --> 00:01:13,560
‫Quindi quello che possiamo fare invece è quello che è noto come un ritorno anticipato.

20
00:01:13,800 --> 00:01:18,420
‫In sostanza, diciamo solo se la fisica gestisce.

21
00:01:19,460 --> 00:01:21,680
‫Uguale a puntatore nullo.

22
00:01:21,710 --> 00:01:23,750
‫Devi mettere un doppio segno di uguale qui.

23
00:01:23,750 --> 00:01:25,190
‫Altrimenti è un incarico.

24
00:01:25,820 --> 00:01:32,330
‫Quindi possiamo scendere a fare delle parentesi graffe e possiamo semplicemente mettere un ritorno qui.

25
00:01:32,600 --> 00:01:38,210
‫Quindi quello che farà è se abbiamo un punto nullo per l'handle della fisica, ritorna

26
00:01:38,210 --> 00:01:43,460
‫immediatamente e non esegue il resto della funzione, rendendo così sicuro nel resto della

27
00:01:43,760 --> 00:01:46,580
‫funzione l'uso della fisica gestire come desideriamo.

28
00:01:47,420 --> 00:01:48,960
‫Quindi lo faremo.

29
00:01:48,980 --> 00:01:51,960
‫Andremo giù dove abbiamo un successo.

30
00:01:52,000 --> 00:01:54,350
‫Penso che non abbiamo più bisogno di questi messaggi di registro.

31
00:01:54,350 --> 00:01:55,880
‫Quindi rimuoverò le istruzioni alt.

32
00:01:56,240 --> 00:02:02,990
‫Rimuoverò praticamente tutto dal corpo dell'istruzione F e useremo il nostro

33
00:02:02,990 --> 00:02:03,740
‫grabber.

34
00:02:04,100 --> 00:02:12,770
‫Quindi faremo i componenti di presa della freccia della maniglia della fisica in una posizione con rotazione.

35
00:02:13,070 --> 00:02:16,790
‫Quindi dobbiamo fornirgli un componente che stiamo cercando di afferrare.

36
00:02:17,060 --> 00:02:22,210
‫Se dai un'occhiata, la cosa che si aspetta sono i tuoi componenti primitivi.

37
00:02:22,220 --> 00:02:26,960
‫Vediamo se abbiamo qualcosa del genere nel nostro risultato di successo.

38
00:02:27,310 --> 00:02:33,710
‫Basta andare alla pagina della documentazione per questo e cercare i componenti primitivi e puoi vedere

39
00:02:33,710 --> 00:02:38,580
‫che il componente get restituirebbe il componente primitivo che è stato colpito.

40
00:02:38,630 --> 00:02:39,230
‫Perfetto.

41
00:02:39,230 --> 00:02:40,070
‫È proprio quello di cui abbiamo bisogno.

42
00:02:40,430 --> 00:02:47,240
‫Quindi abbiamo dovuto cercare i componenti dot get del risultato di successo e questo ci darà ciò che

43
00:02:47,240 --> 00:02:49,370
‫vogliamo per il primo argomento.

44
00:02:50,120 --> 00:02:53,870
‫Ora il prossimo è un nome F per un arco.

45
00:02:53,930 --> 00:02:57,380
‫Ora in realtà non vogliamo afferrare nulla per un osso particolare.

46
00:02:57,390 --> 00:03:01,600
‫Questo sarebbe il caso se avessimo una rete scheletrica, ma non è così.

47
00:03:01,610 --> 00:03:06,320
‫Abbiamo una mesh statica, quindi usiamo solo il nome, senza sottolineare nessuno.

48
00:03:06,770 --> 00:03:10,970
‫E in generale, con i nomi F in cui si parla di ossa, questo viene fuori abbastanza.

49
00:03:11,240 --> 00:03:15,170
‫Se non vuoi inserire nulla, usi il nome, non sottolinea nessuno.

50
00:03:15,380 --> 00:03:18,320
‫Ora abbiamo bisogno del luogo in cui lo prenderemo.

51
00:03:18,320 --> 00:03:20,230
‫E abbiamo già detto che abbiamo esaminato questo.

52
00:03:20,240 --> 00:03:29,270
‫È il punto di impatto del punto del risultato del colpo e quindi la rotazione, la rotazione corrente di quel componente eseguirà tutta

53
00:03:29,270 --> 00:03:32,930
‫la rotazione corrente dell'attore, a seconda di quale preferisci.

54
00:03:33,290 --> 00:03:35,360
‫Quindi il risultato dei colpi ottiene componenti.

55
00:03:35,360 --> 00:03:37,070
‫Prenderemo quei risultati.

56
00:03:37,340 --> 00:03:41,260
‫Ottieni la freccia del punto del componente perché è un puntatore.

57
00:03:41,630 --> 00:03:45,770
‫Ottieni la rotazione dei componenti come.

58
00:03:45,770 --> 00:03:52,370
‫Quindi ora può mettere le parentesi di chiusura su una riga separata e io metterò punto e virgola che

59
00:03:52,370 --> 00:03:56,690
‫terminano l'istruzione e che dovrebbero essere efficaci per afferrare i nostri componenti.

60
00:03:56,900 --> 00:04:04,100
‫Ora, la parte successiva del puzzle è nel componente tick in cui vogliamo usare di nuovo la maniglia della fisica.

61
00:04:04,100 --> 00:04:10,130
‫Quindi per ora copierò il codice, sapendo che copiare il codice in tre posti è un po'

62
00:04:10,130 --> 00:04:15,170
‫troppo, e potremmo pensare di estrarlo in una funzione in modo da riutilizzarlo.

63
00:04:15,470 --> 00:04:17,330
‫Ma i componenti di aspirazione utilizzeranno una maniglia fisica.

64
00:04:17,330 --> 00:04:22,070
‫Torneremo presto se non riusciamo a procurarci una maniglia di fisica.

65
00:04:22,550 --> 00:04:26,300
‫E poi quello che faremo è provare a impostare quei luoghi target.

66
00:04:26,300 --> 00:04:35,090
‫Farò una maniglia fisica, un set di frecce, la posizione del bersaglio e la rotazione.

67
00:04:35,390 --> 00:04:37,280
‫E riflettiamo un po' su questo.

68
00:04:37,280 --> 00:04:42,110
‫Che tipo di località target potremmo essere interessati a impostare?

69
00:04:42,320 --> 00:04:46,100
‫Bene, essenzialmente, sarà lo stesso che abbiamo fatto con l'end point.

70
00:04:46,100 --> 00:04:52,250
‫Prenderemo la nostra posizione attuale, quindi la sposteremo verso l'esterno di una certa

71
00:04:52,250 --> 00:04:52,820
‫distanza.

72
00:04:53,150 --> 00:04:54,530
‫Ora, questo sarà configurabile.

73
00:04:54,530 --> 00:05:00,020
‫Potresti usare la distanza massima di presa, ma trovo che in pratica sia troppo lontana.

74
00:05:00,350 --> 00:05:05,810
‫Quindi, se andiamo dal nostro Grandpa Dot H, creeremo una nuova, nuova proprietà chiamata Edit Anywhere.

75
00:05:06,110 --> 00:05:09,920
‫E sarà un galleggiante chiamato distanza di attesa.

76
00:05:10,280 --> 00:05:12,500
‫E lo imposterò a 200.

77
00:05:12,500 --> 00:05:15,080
‫Quindi sarà molto più vicino al giocatore.

78
00:05:15,290 --> 00:05:20,810
‫Ora, se vogliamo prendere un CP, possiamo entrare nella nostra funzione take e provare a creare questo target.

79
00:05:20,810 --> 00:05:25,970
‫La posizione deve essere un vettore F chiamato posizione target.

80
00:05:26,780 --> 00:05:37,250
‫Lo imposteremo uguale alla posizione di un componente più il vettore di avanzamento moltiplicato per la

81
00:05:37,250 --> 00:05:39,740
‫distanza di mantenimento.

82
00:05:40,400 --> 00:05:42,320
‫Quindi possiamo usarlo come posizione di destinazione.

83
00:05:42,320 --> 00:05:47,660
‫Questo sarà il nostro primo argomento e poi avremo bisogno della rotazione dell'obiettivo.

84
00:05:47,960 --> 00:05:54,620
‫Bene, per questo, userò solo la rotazione del componente corrente in modo che mentre ci guardiamo

85
00:05:54,980 --> 00:06:03,290
‫intorno, ruoteremo l'oggetto con la nostra vista in modo da poter semplicemente eseguire la rotazione del componente per ottenere la

86
00:06:03,290 --> 00:06:07,180
‫rotazione di il componente della scena del grabber corrente.

87
00:06:07,400 --> 00:06:12,830
‫Bello mettere il punto e virgola alla fine di quella riga e ricompilare e vedere come funziona.

88
00:06:13,040 --> 00:06:17,750
‫Ora, dopo aver compilato correttamente, selezioniamo il gargoyle e assicuriamoci di cambiarne la

89
00:06:17,750 --> 00:06:18,910
‫mobilità da START.

90
00:06:19,040 --> 00:06:25,040
‫Pensa a mobile perché ne abbiamo bisogno per potersi muovere in risposta alla fisica e assicuriamoci che stia

91
00:06:25,040 --> 00:06:26,260
‫simulando la fisica.

92
00:06:26,270 --> 00:06:31,640
‫Andiamo alla categoria fisica e controlliamo il pulsante simula fisica.

93
00:06:31,850 --> 00:06:34,730
‫Premiamo play e proviamo a prenderlo.

94
00:06:34,880 --> 00:06:39,500
‫Quindi non sta succedendo nulla al momento, ma sembra essere bloccato all'interno del pavimento, quindi non è

95
00:06:39,500 --> 00:06:39,940
‫l'ideale.

96
00:06:39,950 --> 00:06:43,490
‫Proviamo a sollevarlo un po' in modo che non sia bloccato all'interno del pavimento.

97
00:06:44,060 --> 00:06:47,570
‫Lascialo cadere sul pavimento in quel modo e ora prova a raccoglierlo.

98
00:06:47,790 --> 00:06:50,290
‫Sembra che sia rimasto bloccato di nuovo nel pavimento.

99
00:06:50,300 --> 00:06:52,490
‫Quindi proviamo una seconda volta.

100
00:06:52,760 --> 00:06:53,120
‫Bene.

101
00:06:53,120 --> 00:06:59,570
‫Quindi è un po' inaffidabile e a volte se lo prendi subito, raccoglie bene

102
00:06:59,630 --> 00:07:03,380
‫il gargoyle e puoi raccoglierlo in quel modo.

103
00:07:03,380 --> 00:07:10,670
‫Sto notando che la rotazione non è corretta, e questo perché ho usato la cosa sbagliata nell'afferrare il componente

104
00:07:10,670 --> 00:07:11,450
‫fisico.

105
00:07:11,450 --> 00:07:17,540
‫Ho ottenuto la rotazione del gargoyle e ora stiamo cercando di mantenere quella rotazione che avevo effettivamente bisogno

106
00:07:17,870 --> 00:07:23,240
‫di usare era la rotazione che stiamo usando per prendere la rotazione del grabber.

107
00:07:23,510 --> 00:07:29,210
‫Quindi andiamo avanti e cambiamo e ricompiliamo e premiamo di nuovo play e proveremo a prenderlo.

108
00:07:29,210 --> 00:07:29,780
‫Ecco qua.

109
00:07:30,050 --> 00:07:35,120
‫Questa volta l'ho afferrato e ho ottenuto la rotazione corretta, l'esatta rotazione che aveva.

110
00:07:35,480 --> 00:07:39,290
‫E puoi vedere che sembra essere stato afferrato da una molla.

111
00:07:39,290 --> 00:07:44,630
‫Se provo a spingerlo attraverso un muro, cerca di non passare attraverso il muro il più possibile.

112
00:07:44,630 --> 00:07:52,000
‫Alla fine sbuca attraverso il muro, ma sta cercando di osservare la fisica mentre lo sposto.

113
00:07:52,130 --> 00:07:56,840
‫Quindi ti sfidiamo ora a tirare fuori una nuova funzione chiamata ottieni un handle di fisica.

114
00:07:56,840 --> 00:07:57,830
‫Sarà privato.

115
00:07:58,160 --> 00:07:59,270
‫Dovrebbe restituire una U.

116
00:07:59,270 --> 00:08:04,130
‫La fisica gestisce il componente e dovrebbe rimuovere questo codice duplicato di dover ottenere il proprietario e

117
00:08:04,130 --> 00:08:05,810
‫trovare il componente per classe.

118
00:08:06,170 --> 00:08:11,360
‫Puoi anche farlo potenzialmente contattare, vedere se puoi e farlo loggare.

119
00:08:11,360 --> 00:08:16,850
‫Se non disponiamo di un componente di gestione fisica, fornisci un registro di avviso in modo che venga visualizzato e sappiamo che abbiamo

120
00:08:16,850 --> 00:08:17,810
‫fatto qualcosa di sbagliato.

121
00:08:18,200 --> 00:08:19,940
‫Metti in pausa il video e prova.

122
00:08:23,860 --> 00:08:24,190
‫Bene.

123
00:08:24,190 --> 00:08:24,700
‫Ben tornato.

124
00:08:24,730 --> 00:08:29,260
‫Prima di tutto, andiamo all'intestazione del file dove lo metteremo nella sezione privata.

125
00:08:29,260 --> 00:08:37,150
‫Ma sotto le proprietà, farò in modo che restituisca un po' di fisica, gestisca i componenti e metta un

126
00:08:37,150 --> 00:08:38,050
‫asterisco qui.

127
00:08:38,440 --> 00:08:46,240
‫Ora, poiché stiamo usando questo tipo qui nell'intestazione, dobbiamo effettivamente prendere il nostro include e tagliarlo fuori

128
00:08:46,240 --> 00:08:47,680
‫dal grabber.

129
00:08:47,680 --> 00:08:52,930
‫Quindi l'incluso per quanto riguarda l'handle della fisica, dobbiamo inserirlo nel punto h del

130
00:08:52,930 --> 00:08:55,630
‫grabber dove lo metteremo sopra l'h generato.

131
00:08:55,630 --> 00:08:58,360
‫Questa è l'ultima cosa sempre nella nostra testata dei file.

132
00:08:58,780 --> 00:09:01,600
‫E perché non abbiamo bisogno di averlo anche nel PC?

133
00:09:01,900 --> 00:09:07,270
‫Bene, perché stiamo includendo Grab o H, quindi tutto ciò che inseriamo, prendilo o

134
00:09:07,270 --> 00:09:11,680
‫H sarà automaticamente nel CP in modo da poterlo inserire lì.

135
00:09:12,340 --> 00:09:20,140
‫Ora possiamo andare al punto in cui stiamo definendo questa funzione e chiamarla il potere di gestione della fisica delle

136
00:09:20,140 --> 00:09:21,430
‫parentesi del genere.

137
00:09:21,910 --> 00:09:29,110
‫E penso che questo dovrebbe essere costante, non dovrebbe cambiare nulla nel nostro grabber per chiamare questa funzione.

138
00:09:29,650 --> 00:09:37,540
‫Basta andare al CP, andare in fondo dove incollerò in definizione, attaccherò i due punti del

139
00:09:37,570 --> 00:09:45,970
‫tuo grabber nella parte anteriore e poi rimuoverò il punto e virgola, aggiungendo un paio di parentesi graffe.

140
00:09:46,420 --> 00:09:54,190
‫E quello che vogliamo fare è prendere dove abbiamo questo get on line e lo taglieremo e lo

141
00:09:54,190 --> 00:09:56,800
‫sostituiremo con un get physics.

142
00:09:58,050 --> 00:10:00,140
‫Maneggiare come sapone.

143
00:10:00,360 --> 00:10:07,350
‫E poi nell'handle get physics, possiamo semplicemente restituire il componente get owner find per classe, ecc.

144
00:10:07,560 --> 00:10:13,050
‫E ora possiamo sostituire questo anche quando lo stiamo facendo nella componente tic, stiamo entrando in possesso della maniglia della

145
00:10:13,050 --> 00:10:13,500
‫fisica.

146
00:10:13,950 --> 00:10:18,660
‫Sostituiamo quel pezzetto di codice con ottenere un handle di fisica.

147
00:10:19,080 --> 00:10:22,860
‫Ora è un piccolo pezzo di codice, quasi non ne vale la pena, ma ne vale sicuramente

148
00:10:22,860 --> 00:10:27,810
‫la pena per la pratica a questo punto e per il fatto che ora potremmo aggiungere alcuni messaggi di registro e iniziare a giocare.

149
00:10:27,810 --> 00:10:32,760
‫In realtà non abbiamo bisogno di gestire la fisica, quindi rimuoverò semplicemente quel codice lì.

150
00:10:33,180 --> 00:10:37,080
‫Ma quello che farò è aggiungere un messaggio di registro.

151
00:10:37,440 --> 00:10:44,040
‫Quindi creeremo una variabile per memorizzare il nostro risultato qui, perché se restituiamo e poi proviamo a stampare un

152
00:10:44,040 --> 00:10:45,780
‫messaggio di registro, non funzionerà.

153
00:10:46,140 --> 00:10:50,100
‫Quindi avremo un nuovo componente di gestione della fisica chiamato result.

154
00:10:51,180 --> 00:11:00,270
‫Questo è che torneremo fuori da qui e diremo se il risultato è uguale a puntatore nullo, beh, allora abbiamo bisogno

155
00:11:00,270 --> 00:11:06,120
‫di un nuovo registro con un avviso o in effetti, un errore, davvero.

156
00:11:06,540 --> 00:11:12,270
‫E diremo che il grabber richiede un nuovo componente della maniglia fisica.

157
00:11:12,840 --> 00:11:14,700
‫E poi dopo l'istruzione if.

158
00:11:14,700 --> 00:11:15,780
‫Quindi questo accadrà.

159
00:11:15,780 --> 00:11:21,030
‫Indipendentemente dal fatto che sia nullo o meno, restituiremo il risultato.

160
00:11:21,330 --> 00:11:23,610
‫Quindi andiamo avanti e compiliamolo e controlliamo che tutto funzioni.

161
00:11:23,970 --> 00:11:30,960
‫Sembra aver avuto successo e posso vedere che deve funzionare perché quando faccio clic con il pulsante sinistro del mouse sulla scena

162
00:11:30,960 --> 00:11:37,230
‫ottengo le sfere blu o di debug che vengono disegnate e non verrebbero disegnate se non ce l'avessimo.

163
00:11:37,230 --> 00:11:38,640
‫La fisica gestisce i componenti.

164
00:11:38,760 --> 00:11:39,330
‫Roba fantastica.

165
00:11:39,330 --> 00:11:45,990
‫Quindi in questa lezione siamo stati in grado di afferrare la nostra statua di gargoyle usando il nostro grabber, anche se a

166
00:11:45,990 --> 00:11:48,090
‫volte può essere un po' inaffidabile.

167
00:11:48,090 --> 00:11:52,110
‫E lo risolveremo nelle prossime lezioni, quindi ci vediamo lì.

