﻿1
00:00:04,170 --> 00:00:04,650
‫Ei.

2
00:00:04,650 --> 00:00:05,580
‫Bem vindo de volta.

3
00:00:05,610 --> 00:00:09,390
‫Agora sabemos que precisamos obter o resultado do acerto sob o cursor.

4
00:00:09,420 --> 00:00:14,070
‫Vamos falar um pouco mais sobre como isso funciona e o que isso significa neste vídeo.

5
00:00:14,250 --> 00:00:20,520
‫Portanto, nosso objetivo é obter os resultados de acertos sob o cursor e mostrar esse local, e podemos fazer isso

6
00:00:20,520 --> 00:00:22,090
‫desenhando uma esfera de depuração.

7
00:00:22,110 --> 00:00:24,150
‫Vamos aprender a fazer isso também.

8
00:00:24,180 --> 00:00:27,300
‫Então, vamos falar sobre algo chamado resultado de acerto.

9
00:00:27,600 --> 00:00:30,550
‫Em jogos muitas vezes vai querer fazer algo assim.

10
00:00:30,570 --> 00:00:32,520
‫Teremos um ponto no espaço.

11
00:00:32,550 --> 00:00:39,210
‫Chamaremos esse ponto de início e ele tem o vetor do tipo F e teremos uma localização final.

12
00:00:39,240 --> 00:00:43,260
‫Este também será um ponto no espaço do vetor tipo F.

13
00:00:43,410 --> 00:00:48,720
‫Agora digamos que gostaríamos de desenhar uma linha invisível do ponto inicial ao ponto final.

14
00:00:48,750 --> 00:00:54,450
‫E no momento em que desenhamos essa linha, gostaríamos de ver se há algum objeto entre os

15
00:00:54,450 --> 00:00:55,800
‫locais inicial e final.

16
00:00:56,280 --> 00:01:01,470
‫Agora, se houver, então esta linha que estamos desenhando no espaço vai atingir aquele objeto.

17
00:01:01,470 --> 00:01:05,400
‫Na superfície, quando isso acontece, chamamos isso de evento de acerto.

18
00:01:05,430 --> 00:01:10,820
‫Agora, quando desenhamos uma linha invisível como esta, chama-se executar um traço de linha.

19
00:01:10,830 --> 00:01:14,520
‫E quando atingimos algo, dizemos que temos um rastro atingido.

20
00:01:14,550 --> 00:01:21,240
‫Agora, se acertarmos algo e obtivermos um evento de acerto, o acerto de rastreamento armazenará informações em uma estrutura

21
00:01:21,240 --> 00:01:22,820
‫chamada resultado de acerto.

22
00:01:22,830 --> 00:01:24,700
‫Seu tipo é F hit result.

23
00:01:24,720 --> 00:01:31,560
‫Agora, a estrutura F hit results contém variáveis que armazenam informações sobre o evento hit, incluindo

24
00:01:31,560 --> 00:01:38,680
‫a localização do hit como um vetor f no espaço e o ator que atingimos, entre outras informações.

25
00:01:38,700 --> 00:01:44,100
‫Agora, quando executamos um traço de linha, fazemos isso especificando um canal de colisão.

26
00:01:44,130 --> 00:01:48,390
‫Normalmente com traços de linha, escolhemos o canal chamado visibilidade.

27
00:01:48,510 --> 00:01:56,070
‫Existe um enum chamado E Collision Channel, e neste enum há uma constante de enum chamada

28
00:01:56,070 --> 00:01:57,030
‫visibilidade XY.

29
00:01:57,180 --> 00:02:01,470
‫Este é um dos parâmetros que especificamos ao realizar um traço de linha.

30
00:02:01,740 --> 00:02:07,380
‫Agora, se especificarmos o canal de visibilidade, isso significa que os objetos configurados para bloquear o canal de

31
00:02:07,380 --> 00:02:10,980
‫visibilidade em suas configurações de colisão registrarão eventos de ocorrência.

32
00:02:11,130 --> 00:02:16,350
‫Quaisquer objetos que não estejam configurados para bloquear o canal de visibilidade não gerarão eventos de ocorrência.

33
00:02:16,380 --> 00:02:19,350
‫Agora gostaríamos do resultado do rastreamento sob o cursor.

34
00:02:19,590 --> 00:02:23,040
‫Imagine que temos a tela aqui e aqui está o nosso cursor agora.

35
00:02:23,040 --> 00:02:28,620
‫Na ponta do nosso cursor, temos um ponto na tela quando usamos a função para obter o resultado do acerto

36
00:02:28,620 --> 00:02:29,730
‫sob o cursor.

37
00:02:29,760 --> 00:02:35,040
‫O que acontece é que temos nossa câmera e ela pode ver alguns objetos no mundo, como o chão aqui.

38
00:02:35,040 --> 00:02:40,950
‫E estamos realizando um traço de linha da câmera no ponto na tela correspondente à localização do nosso

39
00:02:40,950 --> 00:02:45,090
‫cursor, e estamos filmando o traço de linha diretamente para o mundo.

40
00:02:45,090 --> 00:02:51,570
‫E se atingirmos algo, geraremos um evento de acerto e armazenaremos as informações em uma estrutura de resultado de acerto.

41
00:02:52,080 --> 00:02:54,470
‫Então vamos descobrir como podemos fazer isso.

42
00:02:54,480 --> 00:03:01,560
‫Estou aqui no tanque CP e o que eu gostaria de fazer é obter o resultado de acerto sob o cursor a cada quadro, o que

43
00:03:01,560 --> 00:03:03,240
‫significa que precisamos da função tick.

44
00:03:03,240 --> 00:03:08,160
‫Então, novamente, vamos voltar à base e encontrar nossa função tick aqui.

45
00:03:08,190 --> 00:03:14,100
‫Agora não a estamos usando para nada no peão base, então podemos mover essa função para a classe tanque, assim como

46
00:03:14,100 --> 00:03:15,570
‫fizemos com Begin Play.

47
00:03:15,570 --> 00:03:21,600
‫Então, vou destacar a declaração da função junto com seu comentário e copiá-la.

48
00:03:21,600 --> 00:03:28,590
‫E depois disso eu vou deletar toda esta seção, pública e tudo, e então eu vou voltar para o Tanque H

49
00:03:28,590 --> 00:03:33,150
‫e aqui na seção pública eu vou colar a declaração da função tick.

50
00:03:33,150 --> 00:03:37,620
‫Agora não a estamos usando no peão base, então vou remover a função tick da base pont.

51
00:03:37,680 --> 00:03:40,710
‫CP Agora saiu do peão base.

52
00:03:41,340 --> 00:03:47,880
‫Agora temos aqui a intenção declarada, mas também precisamos definir a função no tanque.

53
00:03:48,060 --> 00:03:54,180
‫CP vou fazer isso aqui no tanque DHCP, logo abaixo do setup player input componente.

54
00:03:54,180 --> 00:03:56,400
‫Então vamos dizer void tick.

55
00:03:57,340 --> 00:03:59,620
‫É preciso um float chamado Delta Time.

56
00:04:00,940 --> 00:04:02,350
‫E lá está o nosso corpo.

57
00:04:02,380 --> 00:04:09,180
‫Agora, novamente, precisamos de um tanque logo antes da função tick, junto com o operador de resolução de escopo.

58
00:04:09,190 --> 00:04:14,530
‫E também precisamos chamar super tick e passar no horário Delta.

59
00:04:16,450 --> 00:04:19,240
‫Então agora temos carrapato na classe tanque.

60
00:04:19,450 --> 00:04:23,560
‫O que queremos fazer é obter os resultados de acertos sob o cursor.

61
00:04:23,710 --> 00:04:25,450
‫Então aqui está como fazemos isso.

62
00:04:25,480 --> 00:04:31,260
‫A função que vamos usar existe no controlador do player chamada get hit result under cursor.

63
00:04:31,270 --> 00:04:32,800
‫Nós temos falado sobre isso.

64
00:04:32,980 --> 00:04:34,530
‫Agora aqui está a sintaxe.

65
00:04:34,540 --> 00:04:36,160
‫É preciso um canal de rastreamento.

66
00:04:36,190 --> 00:04:40,660
‫Lembre-se, precisamos especificar um canal de rastreamento e vamos usar a visibilidade.

67
00:04:40,840 --> 00:04:43,690
‫Agora temos dois parâmetros de entrada adicionais.

68
00:04:43,720 --> 00:04:46,720
‫O primeiro é um bool chamado complexo de traço B.

69
00:04:46,750 --> 00:04:49,120
‫Falaremos sobre o que isso significa em um segundo.

70
00:04:49,210 --> 00:04:52,270
‫E o terceiro parâmetro de entrada é um resultado F hit.

71
00:04:52,390 --> 00:04:57,820
‫Agora vou clicar em F hit result só para ver esse tipo aqui na documentação.

72
00:04:58,480 --> 00:05:01,960
‫E se eu rolar para baixo, veremos algumas das variáveis.

73
00:05:01,990 --> 00:05:06,670
‫Um deles é chamado de ator e sua descrição diz Ator Hit by the Trace.

74
00:05:06,700 --> 00:05:13,510
‫Também temos esse acerto de bloqueio B, que indica se esse acerto foi resultado de uma colisão de bloqueio.

75
00:05:13,750 --> 00:05:17,770
‫Agora, entre as outras variáveis, temos coisas como ponto de impacto.

76
00:05:18,010 --> 00:05:22,000
‫Este é o local no espaço onde realmente batemos em algo.

77
00:05:22,600 --> 00:05:26,150
‫Então, por que não vamos em frente e tentamos chamar essa função?

78
00:05:26,170 --> 00:05:32,170
‫Primeiro queremos nosso jogador, controle e graças ao que fizemos aqui e começamos a jogar, temos

79
00:05:32,170 --> 00:05:33,370
‫jogador, controle, ref.

80
00:05:33,400 --> 00:05:38,770
‫Agora, a primeira coisa que devemos fazer é verificar se a referência do controlador do jogador é válida.

81
00:05:39,100 --> 00:05:42,140
‫Sempre podemos passar um ponteiro para uma instrução if.

82
00:05:42,160 --> 00:05:47,270
‫Ele retornará true se o ponteiro em si não for um ponteiro nulo.

83
00:05:47,290 --> 00:05:52,930
‫Se for um ponteiro nulo, ele retornará false em uma instrução if e nunca alcançaremos o interior da

84
00:05:52,930 --> 00:05:53,920
‫instrução if.

85
00:05:54,070 --> 00:05:59,740
‫É sempre uma boa ideia verificar nossos ponteiros e garantir que eles não sejam nulos antes de usá-los.

86
00:06:00,010 --> 00:06:04,960
‫Agora vamos pegar nosso player, controller ref e vamos usar o operador de seta para

87
00:06:04,960 --> 00:06:08,950
‫chamar a função, obter o resultado de acerto sob o cursor.

88
00:06:09,100 --> 00:06:12,670
‫Agora podemos ver com o pop-up que temos três parâmetros de entrada.

89
00:06:12,850 --> 00:06:14,650
‫O primeiro é o Canal Trace.

90
00:06:14,950 --> 00:06:22,030
‫Vamos usar o EA Collision Channel e se digitarmos dois dois-pontos, obteremos uma lista suspensa que nos mostra todas

91
00:06:22,030 --> 00:06:26,350
‫as diferentes constantes de enum no enum do EA Collision Channel.

92
00:06:26,530 --> 00:06:34,540
‫Queremos usar visibilidade, então vamos digitar visibilidade XY para especificar que estamos usando o canal de

93
00:06:34,540 --> 00:06:35,230
‫visibilidade.

94
00:06:35,440 --> 00:06:41,470
‫Agora o próximo parâmetro é chamado B Trace Complex e vamos passar false para isso.

95
00:06:41,500 --> 00:06:44,590
‫Agora vamos discutir em alguns minutos o que isso significa.

96
00:06:44,590 --> 00:06:46,900
‫Mas por enquanto vamos usar false.

97
00:06:47,110 --> 00:06:50,300
‫Agora, para o terceiro parâmetro, precisamos de um resultado de acerto.

98
00:06:50,320 --> 00:06:53,140
‫Esta é uma estrutura do resultado de acerto do tipo F.

99
00:06:53,170 --> 00:06:59,500
‫Agora, se você passar o mouse sobre isso, verá que o resultado F hit está sendo passado como uma referência, conforme indicado

100
00:06:59,500 --> 00:07:02,740
‫pelo operador de referência que se parece com um e comercial.

101
00:07:02,890 --> 00:07:08,320
‫Agora, geralmente quando você passa algo como referência, é uma referência de custo, o que significa que a

102
00:07:08,320 --> 00:07:09,730
‫função não poderá alterá-la.

103
00:07:09,730 --> 00:07:13,870
‫Mas aqui estamos passando um resultado F hit como uma referência não const.

104
00:07:14,110 --> 00:07:20,120
‫Isso geralmente é uma dica de que a função foi projetada para alterar esse parâmetro de entrada diretamente.

105
00:07:20,140 --> 00:07:27,730
‫O que obter o resultado da ocorrência sob o cursor fará é preencher essas variáveis no resultado da ocorrência com informações sobre

106
00:07:27,730 --> 00:07:29,260
‫o resultado da ocorrência.

107
00:07:29,290 --> 00:07:32,710
‫Isso significa que precisamos passar um desses resultados de f hit.

108
00:07:32,740 --> 00:07:37,540
‫Vamos criar uma variável local aqui no if check do tipo F hit result.

109
00:07:38,380 --> 00:07:44,650
‫E podemos chamar esse resultado de acerto e podemos simplesmente passar esse N como o terceiro parâmetro de entrada.

110
00:07:44,830 --> 00:07:50,320
‫Agora, depois de chamarmos essa função, esse resultado de acerto será preenchido com dados sobre esse traço

111
00:07:50,320 --> 00:07:51,180
‫de linha.

112
00:07:51,190 --> 00:08:00,040
‫Por exemplo, podemos acessar o ator de ponto de resultado de acerto para obter o ator que foi atingido ou o ponto de impacto de ponto para obter

113
00:08:00,040 --> 00:08:03,430
‫o ponto no espaço onde tivemos o evento de acerto.

114
00:08:03,580 --> 00:08:08,470
‫Portanto, o resultado do acerto é o que usaremos para obter informações sobre o traçado da linha.

115
00:08:08,860 --> 00:08:13,450
‫Agora, muitas vezes é bom poder ver o resultado de um traço de linha.

116
00:08:13,450 --> 00:08:18,010
‫Podemos visualizar facilmente o resultado de um traço de linha desenhando uma esfera de depuração.

117
00:08:18,340 --> 00:08:24,580
‫As esferas de depuração são formas simples que desenhamos no espaço e são ótimas para mostrar um local e

118
00:08:24,580 --> 00:08:26,380
‫as usamos durante a depuração.

119
00:08:26,380 --> 00:08:29,380
‫Na verdade, não usamos esferas de depuração em um jogo de turnos.

120
00:08:29,410 --> 00:08:32,150
‫Então vamos ver como podemos desenhar uma dessas esferas de depuração.

121
00:08:32,170 --> 00:08:36,430
‫Agora aqui está a documentação de uma função chamada desenhar esfera de depuração.

122
00:08:36,430 --> 00:08:38,800
‫Existe em auxiliares de depuração de desenho.

123
00:08:39,850 --> 00:08:45,160
‫Assim, podemos copiar este cabeçalho e incluí-lo onde quisermos chamar draw debug sphere.

124
00:08:45,190 --> 00:08:47,220
‫Agora olhe para todos os parâmetros de entrada.

125
00:08:47,230 --> 00:08:52,240
‫Primeiro, leva um mundo dessa maneira, ele sabe em qual mundo desenhar a esfera.

126
00:08:52,270 --> 00:08:57,100
‫Leva um vetor F para o centro da esfera, bem como um flutuador para o raio.

127
00:08:57,130 --> 00:09:00,800
‫Leva um N 32 para o número de segmentos para essa esfera.

128
00:09:00,820 --> 00:09:04,810
‫Quanto mais segmentos, mais redonda a esfera fica com a cor F.

129
00:09:04,840 --> 00:09:08,350
‫Assim ele sabe em qual cor desenhar essa esfera.

130
00:09:08,380 --> 00:09:11,080
‫Ele quer saber se você quer linhas persistentes.

131
00:09:11,080 --> 00:09:15,220
‫Em outras palavras, as linhas devem desaparecer imediatamente ou devem persistir?

132
00:09:15,220 --> 00:09:18,760
‫Se persistirem, ele quer saber o tempo de vida da esfera.

133
00:09:18,760 --> 00:09:20,910
‫Quando ele deve parar de desenhar a esfera?

134
00:09:20,920 --> 00:09:25,660
‫Se você não desenhar linhas persistentes, digamos que você gostaria de desenhá-lo para um único quadro, então você

135
00:09:25,660 --> 00:09:27,880
‫passaria um negativo como o tempo de vida.

136
00:09:27,910 --> 00:09:34,240
‫Agora os dois últimos parâmetros são opcionais, então vamos manter isso simples discutindo apenas os primeiros

137
00:09:34,240 --> 00:09:35,110
‫sete parâmetros.

138
00:09:35,110 --> 00:09:36,520
‫Vamos ver como isso funciona.

139
00:09:36,730 --> 00:09:42,100
‫Vou desenhar uma esfera de depuração agora no topo, vou incluir auxiliares de depuração de desenho.

140
00:09:42,850 --> 00:09:46,630
‫É aí que esta função de esfera de depuração de desenho é declarada.

141
00:09:46,660 --> 00:09:52,900
‫Agora vamos começar a jogar e simplesmente desenhar uma esfera de depuração para ver como isso funciona.

142
00:09:52,900 --> 00:09:58,030
‫Então, vou chamar draw debug sphere e the.

143
00:09:58,110 --> 00:10:00,780
‫O primeiro parâmetro de entrada é um novo mundo.

144
00:10:01,110 --> 00:10:09,420
‫Podemos obter nosso mundo a qualquer momento chamando Get World, Get World Retorna um novo ponteiro de mundo para nosso

145
00:10:09,420 --> 00:10:10,500
‫mundo atual.

146
00:10:10,500 --> 00:10:12,930
‫Então isso satisfará a primeira entrada.

147
00:10:13,260 --> 00:10:16,420
‫Em seguida, precisamos de um vetor f para o centro da esfera.

148
00:10:16,440 --> 00:10:22,380
‫Agora estamos chamando isso e começamos a jogar para que eu possa simplesmente chamar get ator location e isso obterá

149
00:10:22,380 --> 00:10:24,130
‫a localização do nosso tanque.

150
00:10:24,150 --> 00:10:26,400
‫Já que estamos na classe tanque.

151
00:10:26,640 --> 00:10:29,250
‫Agora vou aumentar um pouco a esfera.

152
00:10:29,250 --> 00:10:40,890
‫Então, vou adicionar um vetor F com zero ponto F para o x zero ponto F para o Y e dizer 200 F para o

153
00:10:40,890 --> 00:10:41,380
‫Z.

154
00:10:41,400 --> 00:10:45,120
‫Agora vou colocar esses parâmetros de entrada cada um em sua própria linha.

155
00:10:45,120 --> 00:10:48,300
‫Portanto, está claro o que estamos passando para cada entrada.

156
00:10:48,330 --> 00:10:55,740
‫A segunda entrada está obtendo esta expressão, que é a localização do ator, mais um vetor apontando para cima com

157
00:10:55,740 --> 00:10:57,230
‫um comprimento de 200.

158
00:10:57,240 --> 00:11:04,260
‫A adição desses dois vetores me dará a localização do tanque elevado no eixo Z em 200

159
00:11:04,260 --> 00:11:04,950
‫unidades.

160
00:11:04,980 --> 00:11:09,600
‫Agora o próximo parâmetro de entrada, será o raio da esfera.

161
00:11:09,870 --> 00:11:16,970
‫Eu vou escolher 100 F apenas para que possamos ver como é uma esfera de depuração com um raio de 100.

162
00:11:16,980 --> 00:11:18,900
‫Em seguida é o número de segmentos.

163
00:11:18,990 --> 00:11:20,470
‫Vou escolher 12.

164
00:11:20,490 --> 00:11:22,130
‫Veremos como isso se parece.

165
00:11:22,140 --> 00:11:29,640
‫Agora, para uma cor F, existe uma classe de cores F e tem muitas cores incorporadas, como o vermelho.

166
00:11:29,850 --> 00:11:34,410
‫Agora, para o booleano chamado B linhas persistentes, vou escolher true.

167
00:11:34,410 --> 00:11:38,280
‫E para o próximo parâmetro de entrada temos o aviso vitalício.

168
00:11:38,280 --> 00:11:40,850
‫Tem um valor padrão de um negativo.

169
00:11:40,860 --> 00:11:44,610
‫Isso significa que, por padrão, ele desenhará a esfera de depuração para um único quadro.

170
00:11:44,610 --> 00:11:52,770
‫Mas vou passar em 30 F para que tenhamos a esfera por 30 segundos e posso omitir os dois últimos parâmetros.

171
00:11:52,770 --> 00:11:55,670
‫Então aqui está nossa chamada de função para desenhar a esfera de depuração.

172
00:11:55,680 --> 00:11:58,260
‫Vamos compilar isso e ver como fica.

173
00:11:58,710 --> 00:12:00,210
‫Ok, então estou de volta ao editor.

174
00:12:00,210 --> 00:12:03,750
‫Vou abrir uma segunda janela para que possamos ver isso em tela cheia.

175
00:12:03,750 --> 00:12:10,650
‫Eu posso ir para as portas de visualização da janela e selecionar a Viewport dois e agora vejo esta segunda janela.

176
00:12:10,680 --> 00:12:15,300
‫Pode não ser em tela cheia quando for aberto, mas você sempre pode maximizá-lo.

177
00:12:15,330 --> 00:12:18,570
‫Agora a partir daqui eu posso jogar o jogo com alt p.

178
00:12:18,600 --> 00:12:19,770
‫Agora verifique isso.

179
00:12:19,770 --> 00:12:21,300
‫Aqui está nossa esfera de depuração.

180
00:12:21,330 --> 00:12:23,610
‫Observe que não é perfeitamente redondo.

181
00:12:23,610 --> 00:12:26,570
‫Escolhemos 12 para o número de segmentos.

182
00:12:26,580 --> 00:12:30,960
‫Quanto mais segmentos você escolher, mais linhas serão necessárias para desenhar a esfera.

183
00:12:30,990 --> 00:12:34,380
‫Agora, esta é uma esfera com um raio de 100.

184
00:12:34,380 --> 00:12:40,170
‫É bem grande, e o centro da esfera está no local do tanque, mais 200 unidades no

185
00:12:40,170 --> 00:12:40,740
‫ar.

186
00:12:40,740 --> 00:12:43,950
‫Então é assim que podemos desenhar esferas de depuração.

187
00:12:44,130 --> 00:12:49,890
‫Portanto, seu desafio é desenhar uma esfera de depuração usando o resultado do rastreamento sob nosso cursor.

188
00:12:49,890 --> 00:12:55,140
‫Então desenhe uma esfera de depuração em nossa nova instrução if onde estamos verificando se o controlador do jogador ref não

189
00:12:55,140 --> 00:12:55,680
‫é nulo.

190
00:12:55,710 --> 00:13:02,520
‫Agora, usando nosso resultado de acerto, obtenha o ponto de impacto do resultado de acerto e use isso como o Centro

191
00:13:02,520 --> 00:13:03,240
‫da Esfera.

192
00:13:03,390 --> 00:13:09,510
‫Agora, para o parâmetro de entrada de linhas persistentes, use false e para a duração, use um negativo.

193
00:13:09,510 --> 00:13:14,250
‫E isso resultará no desenho da esfera para um único quadro, o que é bom porque estamos chamando isso

194
00:13:14,250 --> 00:13:16,530
‫de todos os quadros dentro da função tic.

195
00:13:16,530 --> 00:13:20,490
‫Então pause o vídeo e desenhe a esfera de depuração na função tick.

196
00:13:23,240 --> 00:13:23,570
‫OK.

197
00:13:23,570 --> 00:13:24,920
‫Então estou de volta aqui em Tank.

198
00:13:26,180 --> 00:13:32,480
‫Agora eu tenho essa chamada de função de esfera de depuração de desenho aqui e começo a jogar para que eu possa ir

199
00:13:32,480 --> 00:13:38,450
‫em frente e copiá-la e removê-la do início da reprodução e vamos voltar para o tick aqui dentro de nossa instrução if

200
00:13:38,450 --> 00:13:42,380
‫e estou apenas vamos colá-lo aqui e vamos alterar alguns dos parâmetros de entrada.

201
00:13:42,380 --> 00:13:46,490
‫Por um lado, estamos mudando a localização do centro da esfera.

202
00:13:46,490 --> 00:13:47,960
‫Vamos usar o resultado de acerto.

203
00:13:47,960 --> 00:13:51,200
‫Então, eu vou dizer o ponto de impacto do ponto de resultado de acerto.

204
00:13:51,440 --> 00:13:54,440
‫Agora para o raio, eu gostaria de fazer isso um pouco menor.

205
00:13:54,440 --> 00:13:56,510
‫Vamos fazer cerca de 25.

206
00:13:56,810 --> 00:13:57,320
‫Tudo bem.

207
00:13:57,320 --> 00:13:59,360
‫Se você não fez isso, eu só estou fazendo isso.

208
00:13:59,360 --> 00:14:01,280
‫Então a esfera não é tão grande.

209
00:14:01,280 --> 00:14:06,230
‫Agora, o penúltimo parâmetro que estamos passando é para linhas persistentes.

210
00:14:06,230 --> 00:14:12,500
‫Vou passar em falso e pela duração em vez de 30 segundos, vou usar um ponto F

211
00:14:12,500 --> 00:14:13,190
‫negativo.

212
00:14:13,190 --> 00:14:18,920
‫Dessa forma, obteremos uma esfera para um único quadro, o que está bem, novamente, estamos chamando isso na

213
00:14:18,920 --> 00:14:21,560
‫função tick, então chamaremos isso a cada quadro.

214
00:14:21,560 --> 00:14:23,300
‫Vamos em frente e compilar isso.

215
00:14:23,750 --> 00:14:25,130
‫Agora, de volta ao editor.

216
00:14:25,130 --> 00:14:28,010
‫Se eu apertar o play agora, veja isso.

217
00:14:28,040 --> 00:14:34,280
‫Eu tenho uma esfera de depuração e está sendo desenhada no ponto de impacto para o traço de linha sob o cursor.

218
00:14:34,280 --> 00:14:42,590
‫Agora podemos mover isso pelas paredes e em outros objetos e o traço está atingindo esses objetos porque eles estão configurados para

219
00:14:42,590 --> 00:14:44,810
‫bloquear o canal de visibilidade.

220
00:14:44,840 --> 00:14:46,460
‫Muito incrível agora.

221
00:14:46,460 --> 00:14:50,630
‫Prometi que discutiríamos o rastreamento complexo versus o rastreamento simples.

222
00:14:50,660 --> 00:14:53,510
‫Eu vou te mostrar uma coisa enquanto estamos jogando o jogo.

223
00:14:53,510 --> 00:14:57,770
‫Vamos clicar na janela de visualização para que tenhamos controle sobre nossa palma.

224
00:14:57,770 --> 00:15:02,360
‫Agora aperte a tecla til e digite o comando do console show colisão.

225
00:15:02,360 --> 00:15:07,610
‫Agora pode não ser tão fácil de ver na minha tela, mas você pode definitivamente vê-lo na sua tela.

226
00:15:07,610 --> 00:15:10,880
‫Observe a colisão para nossos peões.

227
00:15:10,910 --> 00:15:18,020
‫Não apenas podemos ver a cápsula, mas podemos ver esse volume de colisão em torno de nossas malhas de tanque e torre.

228
00:15:18,020 --> 00:15:20,000
‫Esta é uma simples colisão.

229
00:15:20,090 --> 00:15:24,050
‫Deixe-me mostrar rapidamente onde podemos ver a simples colisão.

230
00:15:24,080 --> 00:15:31,250
‫Vou entrar em ativos e malhas e se eu clicar duas vezes em, digamos, a base do tanque aqui, estamos olhando

231
00:15:31,250 --> 00:15:32,690
‫para a colisão complexa.

232
00:15:32,690 --> 00:15:39,500
‫Se eu clicar neste ícone de exibição aqui na parte superior e selecionar colisão complexa, posso ver todos os

233
00:15:39,500 --> 00:15:42,410
‫polígonos na colisão complexa e há muitos deles.

234
00:15:42,440 --> 00:15:49,370
‫Se eu clicar no ícone show novamente e, desta vez, marcar a caixa de seleção ao lado de Simple Collision, observe que

235
00:15:49,370 --> 00:15:51,020
‫há outro volume de colisão.

236
00:15:51,020 --> 00:15:56,780
‫Isso é chamado de casco de colisão e tem muito menos geometria.

237
00:15:56,780 --> 00:16:00,950
‫Há um número menor de polígonos com este volume de colisão.

238
00:16:00,950 --> 00:16:06,230
‫Isso é o que o mecanismo de física usa para detectar a sobreposição em eventos de acerto.

239
00:16:06,230 --> 00:16:11,360
‫Se estivesse usando a colisão complexa, exigiria muito mais cálculos.

240
00:16:11,360 --> 00:16:17,780
‫É por isso que temos volumes de colisão simples, então é muito melhor para o desempenho sempre que fazer

241
00:16:17,780 --> 00:16:23,270
‫um rastreamento de linha se rastrearmos para uma colisão simples em vez de uma colisão complexa.

242
00:16:23,870 --> 00:16:27,200
‫Então agora temos o resultado de acerto sob o cursor.

243
00:16:27,290 --> 00:16:32,480
‫Demorou algum trabalho para chegar lá, mas agora temos e provamos mostrando este local com uma

244
00:16:32,480 --> 00:16:33,650
‫esfera de depuração.

245
00:16:33,650 --> 00:16:36,800
‫Essa é uma boa maneira de confirmar que nosso hit de rastreamento está funcionando.

246
00:16:36,800 --> 00:16:42,650
‫Agora que sabemos que está funcionando, podemos usar esse local para girar a torre em nosso tanque.

247
00:16:42,980 --> 00:16:45,260
‫E faremos isso no próximo vídeo.

248
00:16:45,440 --> 00:16:46,520
‫Vejo você em breve.

