﻿1
00:00:04,500 --> 00:00:05,370
‫Olá e bem-vindo.

2
00:00:05,370 --> 00:00:10,950
‫Nesta palestra, vamos montar um grabber para que possamos realmente pegar nossa estátua

3
00:00:10,950 --> 00:00:15,090
‫de gárgula e levá-la conosco à nossa frente.

4
00:00:15,390 --> 00:00:17,400
‫Vamos mergulhar e ver como fazemos isso.

5
00:00:18,180 --> 00:00:24,330
‫Então é hora de começarmos a chamar essa alocação de componentes de captura com uma rotação.

6
00:00:24,570 --> 00:00:26,760
‫Agora, como eu disse antes, na verdade há duas partes nisso.

7
00:00:26,760 --> 00:00:34,050
‫Precisamos pegar o componente e depois precisamos definir sua localização de destino e rotação também para que

8
00:00:34,440 --> 00:00:36,000
‫ele se mova.

9
00:00:36,210 --> 00:00:37,440
‫Então as primeiras coisas primeiro.

10
00:00:37,440 --> 00:00:44,310
‫Em nossa função grab, vamos precisar de um ponteiro para nosso handle de física.

11
00:00:44,730 --> 00:00:50,760
‫Então eu vou copiar a linha de Begin Play e vou até o grabber e vou colocá-la

12
00:00:50,760 --> 00:00:51,510
‫aqui.

13
00:00:51,750 --> 00:00:55,710
‫E para nos protegermos disso ser nulo.

14
00:00:55,980 --> 00:00:57,270
‫Bem, o que deve acontecer?

15
00:00:57,570 --> 00:01:00,270
‫Bem, na verdade, não há nada que queremos fazer.

16
00:01:00,270 --> 00:01:02,820
‫Se não tivermos uma alça de física, não podemos pegar nada.

17
00:01:03,270 --> 00:01:09,450
‫Então, poderíamos colocar todo o corpo dessa função de captura em uma instrução if, mas isso pode parecer um

18
00:01:09,450 --> 00:01:10,170
‫pouco confuso.

19
00:01:10,200 --> 00:01:13,560
‫Então, o que podemos fazer é o que é conhecido como retorno antecipado.

20
00:01:13,800 --> 00:01:18,420
‫Essencialmente, apenas dizemos se a física aguenta.

21
00:01:19,460 --> 00:01:21,680
‫Igual a ponteiro nulo.

22
00:01:21,710 --> 00:01:23,750
‫Você tem que colocar um sinal de igual duplo aqui.

23
00:01:23,750 --> 00:01:25,190
‫Caso contrário, é uma atribuição.

24
00:01:25,820 --> 00:01:32,330
‫Então podemos descer para fazer uns suspensórios e podemos simplesmente colocar um retorno aqui.

25
00:01:32,600 --> 00:01:38,210
‫Então, o que isso vai fazer é se tivermos um null points para o handle de

26
00:01:38,210 --> 00:01:43,460
‫física, ele retornará imediatamente e não executará o resto da função, tornando seguro no resto

27
00:01:43,760 --> 00:01:46,580
‫da função usar a física lidar como desejamos.

28
00:01:47,420 --> 00:01:48,960
‫Então nós vamos fazer isso.

29
00:01:48,980 --> 00:01:51,960
‫Nós vamos descer para onde temos um sucesso.

30
00:01:52,000 --> 00:01:54,350
‫Acho que não precisamos mais dessas mensagens de log.

31
00:01:54,350 --> 00:01:55,880
‫Então, vou remover as instruções alt.

32
00:01:56,240 --> 00:02:02,990
‫Vou remover basicamente tudo do corpo da instrução F, e vamos usar nosso

33
00:02:02,990 --> 00:02:03,740
‫grabber.

34
00:02:04,100 --> 00:02:12,770
‫Então, vamos fazer a física lidar com os componentes de captura de seta no local com rotação.

35
00:02:13,070 --> 00:02:16,790
‫Então temos que fornecer um componente que estamos tentando pegar.

36
00:02:17,060 --> 00:02:22,210
‫Se você der uma olhada, o que está esperando são seus componentes primitivos.

37
00:02:22,220 --> 00:02:26,960
‫Vamos ver se temos algo do tipo em nosso resultado de acertos.

38
00:02:27,310 --> 00:02:33,710
‫Basta ir até a página de documentação e procurar por seus componentes primitivos e você pode

39
00:02:33,710 --> 00:02:38,580
‫ver que o componente get retornaria o componente primitivo que foi atingido.

40
00:02:38,630 --> 00:02:39,230
‫Perfeito.

41
00:02:39,230 --> 00:02:40,070
‫Isso é exatamente o que precisamos.

42
00:02:40,430 --> 00:02:47,240
‫Então, tivemos que procurar os componentes dot get do resultado do hit e isso nos dará o que

43
00:02:47,240 --> 00:02:49,370
‫queremos para o primeiro argumento.

44
00:02:50,120 --> 00:02:53,870
‫Agora o próximo é um nome F para um arco.

45
00:02:53,930 --> 00:02:57,380
‫Agora, na verdade, não queremos pegar nada por um osso em particular.

46
00:02:57,390 --> 00:03:01,600
‫Este seria o caso se tivéssemos uma malha esquelética, mas não temos.

47
00:03:01,610 --> 00:03:06,320
‫Temos uma malha estática, então usamos apenas name, sublinhado none.

48
00:03:06,770 --> 00:03:10,970
‫E de um modo geral, com nomes F onde estamos falando de ossos, isso sai bastante.

49
00:03:11,240 --> 00:03:15,170
‫Se você não quiser colocar nada, use name, sublinhe none.

50
00:03:15,380 --> 00:03:18,320
‫Agora precisamos do local em que vamos pegá-lo.

51
00:03:18,320 --> 00:03:20,230
‫E já dissemos que analisamos isso.

52
00:03:20,240 --> 00:03:29,270
‫É o ponto de impacto do ponto de resultado do hit e depois a rotação bem, a rotação atual desse componente fará toda

53
00:03:29,270 --> 00:03:32,930
‫a rotação atual do ator, o que você preferir.

54
00:03:33,290 --> 00:03:35,360
‫Assim, o resultado dos acertos obtém componentes.

55
00:03:35,360 --> 00:03:37,070
‫Nós vamos pegar esses resultados.

56
00:03:37,340 --> 00:03:41,260
‫Obtenha a seta de ponto do componente porque é um ponteiro.

57
00:03:41,630 --> 00:03:45,770
‫Obter rotação de componentes como.

58
00:03:45,770 --> 00:03:52,370
‫Então agora ele pode colocar os parênteses de fechamento em uma linha separada e eu colocarei um ponto e vírgula

59
00:03:52,370 --> 00:03:56,690
‫que finaliza a instrução e isso deve ser eficaz em pegar nossos componentes.

60
00:03:56,900 --> 00:04:04,100
‫Agora, a próxima parte do quebra-cabeça está no componente tick, onde queremos usar novamente a alça de física.

61
00:04:04,100 --> 00:04:10,130
‫Então, vou copiar o código por enquanto, sabendo que copiar código para três lugares é um pouco

62
00:04:10,130 --> 00:04:15,170
‫demais, e podemos pensar em colocá-lo em uma função para que possamos reutilizar isso.

63
00:04:15,470 --> 00:04:17,330
‫Mas os componentes de admissão usarão uma alça de física.

64
00:04:17,330 --> 00:04:22,070
‫Vamos voltar mais cedo se não conseguirmos uma alça de física.

65
00:04:22,550 --> 00:04:26,300
‫E então o que vamos fazer é tentar definir esses locais de destino.

66
00:04:26,300 --> 00:04:35,090
‫Eu vou fazer uma alça de física, conjunto de setas, localização do alvo e rotação.

67
00:04:35,390 --> 00:04:37,280
‫E vamos pensar um pouco sobre isso.

68
00:04:37,280 --> 00:04:42,110
‫Que tipo de local de destino podemos estar interessados em definir?

69
00:04:42,320 --> 00:04:46,100
‫Bem, essencialmente, será o mesmo que fizemos com o ponto final.

70
00:04:46,100 --> 00:04:52,250
‫Nós vamos pegar nossa localização atual, então movê-la para fora na direção para frente por uma certa

71
00:04:52,250 --> 00:04:52,820
‫distância.

72
00:04:53,150 --> 00:04:54,530
‫Agora, isso será configurável.

73
00:04:54,530 --> 00:05:00,020
‫Você poderia usar a distância máxima de captura, mas acho que na prática isso parece muito distante.

74
00:05:00,350 --> 00:05:05,810
‫Então, se formos ao nosso Grandpa Dot H, vamos criar uma nova propriedade chamada Edit Anywhere.

75
00:05:06,110 --> 00:05:09,920
‫E vai ser um float chamado distância de espera.

76
00:05:10,280 --> 00:05:12,500
‫E eu vou definir isso para 200.

77
00:05:12,500 --> 00:05:15,080
‫Então vai ficar muito mais perto do jogador.

78
00:05:15,290 --> 00:05:20,810
‫Agora, se vamos pegar um CP, podemos entrar em nossa função take e tentar criar este alvo.

79
00:05:20,810 --> 00:05:25,970
‫A localização tem que ser um vetor F chamado localização alvo.

80
00:05:26,780 --> 00:05:37,250
‫Vamos definir isso igual ao get a localização do componente mais o vetor get forward multiplicado pela

81
00:05:37,250 --> 00:05:39,740
‫distância de espera.

82
00:05:40,400 --> 00:05:42,320
‫Então, podemos usar isso como o local de destino.

83
00:05:42,320 --> 00:05:47,660
‫Esse será nosso primeiro argumento e então precisamos da rotação de destino.

84
00:05:47,960 --> 00:05:54,620
‫Bem, para isso, vou usar a rotação do componente atual para que, ao olharmos ao redor,

85
00:05:54,980 --> 00:06:03,290
‫gire o objeto com nossa visão para que possamos apenas fazer a rotação do componente get para obter a rotação

86
00:06:03,290 --> 00:06:07,180
‫de o componente de cena de captura atual.

87
00:06:07,400 --> 00:06:12,830
‫Nice coloque ponto e vírgula no final dessa linha e recompile e veja como isso funciona.

88
00:06:13,040 --> 00:06:17,750
‫Agora, depois de compilarmos com sucesso, vamos selecionar a gárgula e garantir que alteramos sua

89
00:06:17,750 --> 00:06:18,910
‫mobilidade de START.

90
00:06:19,040 --> 00:06:25,040
‫Pense em móvel porque precisamos que ele seja capaz de se mover em resposta à física e vamos ter certeza de que

91
00:06:25,040 --> 00:06:26,260
‫está simulando a física.

92
00:06:26,270 --> 00:06:31,640
‫Vamos para a categoria física e verifique o botão simular física.

93
00:06:31,850 --> 00:06:34,730
‫Vamos apertar o play e tentar pegá-lo.

94
00:06:34,880 --> 00:06:39,500
‫Então nada está acontecendo no momento, mas parece estar preso dentro do chão, então isso não é o

95
00:06:39,500 --> 00:06:39,940
‫ideal.

96
00:06:39,950 --> 00:06:43,490
‫Vamos tentar levantá-lo um pouco para que não fique preso no chão.

97
00:06:44,060 --> 00:06:47,570
‫Deixe-o cair no chão assim e agora tente pegá-lo.

98
00:06:47,790 --> 00:06:50,290
‫Isso parece ter ficado preso no chão novamente.

99
00:06:50,300 --> 00:06:52,490
‫Então vamos tentar uma segunda vez.

100
00:06:52,760 --> 00:06:53,120
‫OK.

101
00:06:53,120 --> 00:06:59,570
‫Portanto, não é um pouco confiável e, às vezes, se você o pega imediatamente, ele pega

102
00:06:59,630 --> 00:07:03,380
‫a gárgula muito bem e você pode pegá-lo assim.

103
00:07:03,380 --> 00:07:10,670
‫Estou percebendo que a rotação não está correta, e isso ocorre porque usei a coisa errada ao pegar o componente

104
00:07:10,670 --> 00:07:11,450
‫de física.

105
00:07:11,450 --> 00:07:17,540
‫Consegui a rotação da gárgula e agora estamos tentando manter a rotação que eu realmente precisava

106
00:07:17,870 --> 00:07:23,240
‫usar era a rotação que estamos usando para tirar a rotação do grabber.

107
00:07:23,510 --> 00:07:29,210
‫Então vamos em frente e mudar isso e recompilar e vamos apertar play novamente e tentar pegá-lo.

108
00:07:29,210 --> 00:07:29,780
‫Ai está.

109
00:07:30,050 --> 00:07:35,120
‫Desta vez eu peguei e consegui a rotação correta, a rotação exata que tinha.

110
00:07:35,480 --> 00:07:39,290
‫E você pode ver que parece que está sendo agarrado por uma mola.

111
00:07:39,290 --> 00:07:44,630
‫Se eu tentar empurrá-lo através de uma parede, ele tentará não atravessar a parede o máximo que puder.

112
00:07:44,630 --> 00:07:52,000
‫Ele eventualmente atravessa a parede, mas está tentando observar a física enquanto eu o movo.

113
00:07:52,130 --> 00:07:56,840
‫Então, vamos desafiá-lo agora a usar uma nova função chamada obter um identificador de física.

114
00:07:56,840 --> 00:07:57,830
‫Vai ser privado.

115
00:07:58,160 --> 00:07:59,270
‫Deve retornar um U.

116
00:07:59,270 --> 00:08:04,130
‫Componente manipulador de física, e deve remover esse código duplicado de precisar obter o proprietário e

117
00:08:04,130 --> 00:08:05,810
‫encontrar o componente por classe.

118
00:08:06,170 --> 00:08:11,360
‫Você também pode fazer com que ele potencialmente entre em contato, veja se consegue e faça logar.

119
00:08:11,360 --> 00:08:16,850
‫Se não tivermos um componente de manipulação física, dê um log de aviso para que ele apareça e saibamos que

120
00:08:16,850 --> 00:08:17,810
‫fizemos algo errado.

121
00:08:18,200 --> 00:08:19,940
‫Pause o vídeo e vá em frente.

122
00:08:23,860 --> 00:08:24,190
‫OK.

123
00:08:24,190 --> 00:08:24,700
‫Bem vindo de volta.

124
00:08:24,730 --> 00:08:29,260
‫Em primeiro lugar, vamos para o início do arquivo onde vamos colocar isso na seção privada.

125
00:08:29,260 --> 00:08:37,150
‫Mas abaixo das propriedades, vou fazer com que ele retorne algumas físicas, manipule componentes e coloque um asterisco

126
00:08:37,150 --> 00:08:38,050
‫aqui.

127
00:08:38,440 --> 00:08:46,240
‫Agora, como estamos usando esse tipo aqui no cabeçalho, precisamos realmente pegar nosso include e cortá-lo

128
00:08:46,240 --> 00:08:47,680
‫do grabber.

129
00:08:47,680 --> 00:08:52,930
‫Então, o incluído em relação ao identificador de física, precisamos colocá-lo no ponto de captura h

130
00:08:52,930 --> 00:08:55,630
‫onde vamos colocá-lo acima do h gerado.

131
00:08:55,630 --> 00:08:58,360
‫Essa é a última coisa sempre em nossa cabeça de arquivos.

132
00:08:58,780 --> 00:09:01,600
‫E por que não precisamos tê-lo também no CP?

133
00:09:01,900 --> 00:09:07,270
‫Bem, porque estamos incluindo Grab ou H, então qualquer coisa que colocarmos, pegue ou H

134
00:09:07,270 --> 00:09:11,680
‫estará automaticamente no CP para que possamos colocar isso incluído lá.

135
00:09:12,340 --> 00:09:20,140
‫Agora podemos ir até onde estamos definindo esta função e chamá-la de poder de manipulação de física de

136
00:09:20,140 --> 00:09:21,430
‫parênteses assim.

137
00:09:21,910 --> 00:09:29,110
‫E acho que isso deve ser constante, não deve mudar nada no nosso grabber para chamar essa função.

138
00:09:29,650 --> 00:09:37,540
‫Basta ir até o CP, ir para a parte inferior onde vou colar na definição, vou

139
00:09:37,570 --> 00:09:45,970
‫colocar dois pontos na frente e depois estou removendo o ponto e vírgula, adicionando um par de chaves.

140
00:09:46,420 --> 00:09:54,190
‫E o que queremos fazer é pegar onde temos isso e vamos cortá-lo e

141
00:09:54,190 --> 00:09:56,800
‫substituí-lo por uma física.

142
00:09:58,050 --> 00:10:00,140
‫Manuseie como sabão.

143
00:10:00,360 --> 00:10:07,350
‫E, em seguida, no identificador de obter física, podemos simplesmente retornar o componente de localização do proprietário de obtenção por classe, etc.

144
00:10:07,560 --> 00:10:13,050
‫E agora podemos substituir isso também onde estamos fazendo isso no componente tic, estamos pegando a alça de

145
00:10:13,050 --> 00:10:13,500
‫física.

146
00:10:13,950 --> 00:10:18,660
‫Vamos substituir esse pouco de código por um identificador de física.

147
00:10:19,080 --> 00:10:22,860
‫Agora é um pedaço de código tão pequeno, quase não vale a pena, mas definitivamente vale

148
00:10:22,860 --> 00:10:27,810
‫a pena para a prática neste ponto e pelo fato de que podemos adicionar algumas mensagens de log agora e começar a jogar.

149
00:10:27,810 --> 00:10:32,760
‫Na verdade, não precisamos lidar com a física, então vou remover esse código de lá.

150
00:10:33,180 --> 00:10:37,080
‫Mas o que vou fazer é adicionar uma mensagem de log.

151
00:10:37,440 --> 00:10:44,040
‫Então vamos criar uma variável para armazenar nosso resultado aqui, porque se retornarmos e depois tentarmos imprimir uma mensagem

152
00:10:44,040 --> 00:10:45,780
‫de log, não vai funcionar.

153
00:10:46,140 --> 00:10:50,100
‫Então, teremos um novo componente de manipulação de física chamado resultado.

154
00:10:51,180 --> 00:11:00,270
‫É assim que vamos sair daqui e diremos que se o resultado for igual a ponteiro nulo, bem, então precisamos

155
00:11:00,270 --> 00:11:06,120
‫de um novo log com um aviso ou na verdade um erro.

156
00:11:06,540 --> 00:11:12,270
‫E vamos dizer que o grabber requer um novo componente de alça de física.

157
00:11:12,840 --> 00:11:14,700
‫E depois da instrução if.

158
00:11:14,700 --> 00:11:15,780
‫Então isso vai acontecer.

159
00:11:15,780 --> 00:11:21,030
‫Seja ou não nulo, vamos retornar o resultado.

160
00:11:21,330 --> 00:11:23,610
‫Então vamos em frente e compilar isso e verificar se tudo funciona.

161
00:11:23,970 --> 00:11:30,960
‫Parece ter tido sucesso e posso ver que deve estar funcionando porque quando eu cliquei com o botão esquerdo na cena eu estou

162
00:11:30,960 --> 00:11:37,230
‫recebendo os orbes azuis ou de depuração sendo desenhados e eles não seriam desenhados se não estivéssemos pegando isso.

163
00:11:37,230 --> 00:11:38,640
‫Componentes do punho da física.

164
00:11:38,760 --> 00:11:39,330
‫Coisas boas.

165
00:11:39,330 --> 00:11:45,990
‫Então, nesta palestra, conseguimos pegar nossa estátua de gárgula usando nosso grabber, embora às vezes possa

166
00:11:45,990 --> 00:11:48,090
‫ser um pouco pouco confiável.

167
00:11:48,090 --> 00:11:52,110
‫E vamos resolver isso nas próximas palestras, então nos vemos lá.

