﻿1
00:00:04,320 --> 00:00:05,250
‫Olá e bem-vindo.

2
00:00:05,250 --> 00:00:11,310
‫Nesta palestra, vamos configurar alguns traçados de linha para que possamos atirar nas paredes e ver

3
00:00:11,640 --> 00:00:14,040
‫esses pontos de depuração aparecendo.

4
00:00:14,370 --> 00:00:18,030
‫E vamos fazer isso usando um novo traço de linha de função por canal.

5
00:00:18,030 --> 00:00:22,290
‫Vamos ver por que estamos usando essa linha traçada por tipo de objeto, que é o que usamos antes.

6
00:00:22,530 --> 00:00:24,090
‫Vamos mergulhar e ver como é feito.

7
00:00:25,490 --> 00:00:30,950
‫Então, de volta à nossa fuga de construção, usamos traços de linha e usamos esta função aqui, o traço de linha

8
00:00:31,550 --> 00:00:32,630
‫por tipo de objeto.

9
00:00:32,960 --> 00:00:36,080
‫E é isso que queremos usar?

10
00:00:36,540 --> 00:00:42,110
‫Bem, qual é a diferença entre rastreamento de linha por tipo de objeto e seu irmão muito próximo, que

11
00:00:42,110 --> 00:00:44,240
‫é um rastreamento de linha por canal.

12
00:00:45,170 --> 00:00:53,030
‫Bem, o tipo de objeto diz que quero pesquisar nesta linha e ver se encontro um objeto que corresponda a esse

13
00:00:53,030 --> 00:00:53,490
‫tipo.

14
00:00:53,510 --> 00:01:01,670
‫Então, acredito que o que usamos na construção de escape foi algo como o tipo de objeto de corpo físico e

15
00:01:01,670 --> 00:01:04,040
‫isso é ótimo, atingirá corpos físicos.

16
00:01:04,340 --> 00:01:09,950
‫Mas se você decidir de repente que quer outra coisa para acertar uma bola, isso não deixa muito espaço para

17
00:01:09,950 --> 00:01:10,540
‫opções.

18
00:01:10,550 --> 00:01:16,430
‫Portanto, o canal é melhor para isso porque nos permite definir nossos próprios canais personalizados e, em

19
00:01:16,430 --> 00:01:21,860
‫seguida, definir quais tipos de objetos são transparentes para esse canal e quais o bloqueiam.

20
00:01:22,220 --> 00:01:29,120
‫Então, isso é ótimo porque o que queremos é dizer, ok, talvez um tipo de coisa do tipo Bush não

21
00:01:30,080 --> 00:01:36,590
‫possa bloquear uma bala, enquanto uma parede bloqueará uma bala, mas não sofrerá nenhum dano, mas isso podemos

22
00:01:36,590 --> 00:01:37,790
‫lidar mais tarde.

23
00:01:38,300 --> 00:01:45,140
‫Então canaliza toda a rota que vamos descer e podemos encontrar o método correto aqui fazendo o controle.

24
00:01:45,140 --> 00:01:50,930
‫P E, a propósito, há uma coisinha extra legal que eu aprendi recentemente é que se

25
00:01:50,930 --> 00:01:58,130
‫você usar o símbolo de ato, você pode procurar por símbolos dentro deste arquivo e ou até mesmo em outros arquivos.

26
00:01:58,130 --> 00:01:59,960
‫Mas se você tiver o arquivo aberto, é muito mais rápido.

27
00:02:00,440 --> 00:02:07,160
‫Então você pode fazer algo como traço de linha e você pode ver que está nos dando a lista de

28
00:02:07,160 --> 00:02:14,120
‫todos os símbolos que são funções ou classes ou variáveis, e podemos encontrar essa linha, traço, linha de teste, traço, único por

29
00:02:14,120 --> 00:02:15,890
‫canal por tipo de objeto.

30
00:02:15,890 --> 00:02:21,350
‫Queremos este primeiro traço de uma linha, canal de BI único, que terá um parâmetro de saída

31
00:02:21,350 --> 00:02:26,960
‫para o que atingimos, os pontos iniciais, os pontos finais, o canal de rastreamento de colisão chegará a

32
00:02:26,960 --> 00:02:32,210
‫isso em pouco tempo e, em seguida, alguma consulta parâmetros que têm alguns padrões, então não precisamos

33
00:02:32,210 --> 00:02:33,080
‫nos preocupar.

34
00:02:33,410 --> 00:02:39,140
‫Então, apenas essas primeiras coisas, o hit Iniciar e Trace Channel, o que queremos nos preocupar.

35
00:02:39,710 --> 00:02:41,540
‫Vamos configurar um canal de rastreamento.

36
00:02:41,780 --> 00:02:45,170
‫Vamos para configurações e configurações do projeto para isso.

37
00:02:45,350 --> 00:02:48,920
‫E então estamos procurando no motor para a área de colisões.

38
00:02:48,950 --> 00:02:53,180
‫E aqui embaixo você pode ver que temos canais de objetos e canais de rastreamento.

39
00:02:53,240 --> 00:02:57,530
‫Canais de objeto é, na verdade, apenas outra maneira de dizer diferentes tipos de objeto.

40
00:02:57,530 --> 00:03:02,090
‫Então, se você quisesse ter os conjuntos padrão de objetos como peões e coisas assim, se você quisesse

41
00:03:02,090 --> 00:03:05,870
‫uma nova categoria de objeto, você poderia seguir a rota do canal de objetos.

42
00:03:06,230 --> 00:03:12,260
‫Mas os traços permitem que você defina o extremo oposto do espectro, que é como, você sabe,

43
00:03:12,260 --> 00:03:15,500
‫eu tenho uma bala, que objetos ela pode atingir?

44
00:03:15,860 --> 00:03:21,590
‫Então, vamos seguir essa rota, adicionar um novo canal de rastreamento e chamar esse marcador.

45
00:03:22,660 --> 00:03:25,750
‫E a resposta padrão será.

46
00:03:25,750 --> 00:03:29,200
‫BLOCO O que basicamente significa que todos os tipos de objetos vão.

47
00:03:29,200 --> 00:03:36,040
‫BLOCK A menos que agora especifiquemos o contrário, podemos ir em frente e aceitar isso e podemos ver nossas predefinições

48
00:03:36,040 --> 00:03:36,610
‫aqui.

49
00:03:37,030 --> 00:03:42,280
‫E se nós apenas expandirmos isso, as predefinições mostrarão a você que temos um monte de coisas diferentes

50
00:03:42,280 --> 00:03:47,440
‫que podemos aplicar, coisas que podemos dizer, queremos que isso seja um ator de física, nesse caso é

51
00:03:47,440 --> 00:03:52,600
‫tipo de objeto, que será o que é um canal de objeto predefinido será o corpo físico.

52
00:03:52,960 --> 00:04:00,490
‫Mas se expandirmos isso, você pode ver qual é sua reação aos diferentes tipos de traços aqui.

53
00:04:00,490 --> 00:04:06,160
‫Então nós temos nossos tipos de câmera de rastreamento, nossas próprias balas, visibilidade, ela bloqueia tudo isso e então tem tipos

54
00:04:06,160 --> 00:04:07,000
‫de objetos.

55
00:04:07,000 --> 00:04:13,600
‫Então é assim que ele interage fisicamente com outros objetos, como peões e veículos, etc. Não é assim que ele interage com

56
00:04:13,600 --> 00:04:16,600
‫o traço de linha por objeto.

57
00:04:16,720 --> 00:04:19,150
‫Isso é um pouco confuso e já me confundiu antes.

58
00:04:19,780 --> 00:04:26,920
‫Então o tipo de traço é o que é interessante e podemos apenas dar uma olhada aqui e ver que nenhuma colisão

59
00:04:26,920 --> 00:04:28,930
‫deve ser configurada para não colidir.

60
00:04:28,930 --> 00:04:31,870
‫Então vamos fazer com que nossas balas não colidam com isso também.

61
00:04:31,870 --> 00:04:39,100
‫Então, apenas substituir algumas das predefinições de modo que nosso marcador funcione como seria de esperar, sobrepor todos, por

62
00:04:39,100 --> 00:04:42,310
‫exemplo, deve basicamente se sobrepor ao marcador.

63
00:04:42,730 --> 00:04:49,810
‫E provavelmente a parede invisível e a dinâmica da parede invisível também devem ser ignoradas para os propósitos de nossa

64
00:04:49,810 --> 00:04:50,320
‫bala.

65
00:04:50,890 --> 00:04:51,910
‫Mesmo com dinâmico aqui.

66
00:04:51,910 --> 00:04:55,030
‫Você pode ver que estamos basicamente terminando com algo bastante semelhante a um traço visível.

67
00:04:55,450 --> 00:05:00,790
‫Mas a razão para mantê-lo separado é que podemos querer fazer pequenas distinções, como você pode ver, você

68
00:05:00,790 --> 00:05:04,480
‫não pode ver através deste arbusto, mas você pode atirar através dele.

69
00:05:04,690 --> 00:05:08,920
‫Esse tipo de coisa significa que ter nosso próprio canal de rastreamento é muito, muito útil.

70
00:05:09,130 --> 00:05:14,740
‫Agora gostaríamos de poder usar esse canal de rastreamento no código, e é um pouco estranho como temos que

71
00:05:14,740 --> 00:05:21,430
‫fazer isso porque há um enum aqui, um canal de colisão E, e se formos F12 para sua definição, você pode ver há

72
00:05:21,430 --> 00:05:27,550
‫um monte para os predefinidos, mundo estático -- visibilidade, etc. aqui em baixo, mas há um monte de

73
00:05:27,550 --> 00:05:33,550
‫canais de rastreamento de mecanismo um, dois e o canal de rastreamento de jogo um, dois, três

74
00:05:33,550 --> 00:05:34,840
‫etc. predefinido.

75
00:05:35,560 --> 00:05:37,540
‫Qual dos nossos é esse?

76
00:05:37,540 --> 00:05:39,700
‫Você sabe, é que não temos uma bala aqui.

77
00:05:40,330 --> 00:05:42,730
‫Na verdade, temos que usar um desses canais de rastreamento de jogo.

78
00:05:42,730 --> 00:05:44,350
‫Então é realmente um pouco confuso.

79
00:05:44,740 --> 00:05:45,490
‫Qual é?

80
00:05:46,000 --> 00:05:50,710
‫Então, a maneira de fazer isso é indo para a pasta do seu projeto e entrando em config.

81
00:05:51,280 --> 00:05:56,080
‫E o que queremos é o mecanismo padrão INI e queremos abri-lo em um texto que seja.

82
00:05:56,080 --> 00:05:58,270
‫Então você pode fazer isso em qualquer texto que você gosta.

83
00:05:58,270 --> 00:06:00,520
‫Eu gosto de arrastá-lo para o código do Visual Studio.

84
00:06:00,880 --> 00:06:03,070
‫Portanto, esse código do Visual Studio é quem o abre.

85
00:06:03,880 --> 00:06:10,930
‫E aqui queremos essencialmente procurar nossa bala e ver para que ela foi atribuída.

86
00:06:10,930 --> 00:06:16,930
‫E eu acho que esta primeira linha aqui nos diz que o canal que foi dado é o jogo Trace Channel

87
00:06:16,930 --> 00:06:17,380
‫one.

88
00:06:17,800 --> 00:06:18,370
‫Fantástico.

89
00:06:18,370 --> 00:06:21,670
‫Então é isso que vamos usar quando estivermos fazendo nosso traço de linha.

90
00:06:22,300 --> 00:06:26,860
‫Então vamos começar a colocar a estrutura desse traço de linha no lugar.

91
00:06:27,840 --> 00:06:30,500
‫A primeira coisa que vamos precisar é de um ponto de partida.

92
00:06:30,510 --> 00:06:31,230
‫Nós já temos isso.

93
00:06:31,230 --> 00:06:32,760
‫Essa é a localização da nossa janela de visualização.

94
00:06:33,210 --> 00:06:37,650
‫Também precisaremos de um ponto final para nosso traço de linha que é um pouco mais difícil de calcular.

95
00:06:38,130 --> 00:06:45,660
‫Então vamos criar um vetor F para o nosso fim, e vamos calcular isso usando nosso ponto de

96
00:06:46,410 --> 00:06:54,060
‫parada, mais a rotação multiplicada pela quantidade, a distância que queremos ir e não a rotação, mas o vetor

97
00:06:54,070 --> 00:06:56,640
‫que aponta no sentido da rotação.

98
00:06:57,120 --> 00:07:03,840
‫Um pouco confuso, mas na verdade se você fizer um vetor de ponto de rotação, isso lhe dará um vetor que

99
00:07:03,840 --> 00:07:05,850
‫aponta na direção dessa rotação.

100
00:07:05,850 --> 00:07:11,200
‫É meio que fazendo o oposto do que estávamos fazendo no projeto de animação para obter uma rotação do

101
00:07:11,200 --> 00:07:11,640
‫vetor.

102
00:07:11,850 --> 00:07:12,930
‫Isso vai para o outro lado.

103
00:07:13,350 --> 00:07:20,840
‫Então vamos fazer a localização mais este vetor de rotação, e então queremos essencialmente um alcance máximo.

104
00:07:20,850 --> 00:07:25,950
‫Então eu vou introduzir uma nova propriedade aqui, fazer uma edição em qualquer lugar e vai ser

105
00:07:25,950 --> 00:07:27,990
‫um float chamado Max Range assim.

106
00:07:27,990 --> 00:07:33,960
‫E podemos configurá-lo para um padrão de algo como 10.000 ou um intervalo máximo de mil.

107
00:07:33,960 --> 00:07:36,810
‫Isso vai ser cerca de 100 metros, desculpe, cerca de dez metros.

108
00:07:37,260 --> 00:07:42,810
‫E vamos fazer um vetor de ponto de rotação multiplicado pelo alcance máximo.

109
00:07:42,810 --> 00:07:46,470
‫Então esse será o vetor que obtemos dessa rotação será de tamanho um.

110
00:07:46,830 --> 00:07:50,970
‫Multiplicá-lo pelo intervalo máximo o tornará um vetor de tamanho, qualquer que seja o intervalo máximo.

111
00:07:50,970 --> 00:07:54,630
‫E então adicionamos isso em cima do local para chegar ao ponto final.

112
00:07:54,810 --> 00:07:57,510
‫Não se preocupe se você não seguir essa matemática 100%.

113
00:07:58,050 --> 00:08:01,280
‫O importante é que é assim que queremos chegar ao nosso endpoint.

114
00:08:01,560 --> 00:08:07,530
‫Então ele vai fazer uma linha aqui para adicionar algum rastreamento de linha e eu vou remover esta câmera

115
00:08:07,530 --> 00:08:12,720
‫de depuração de desenho porque eu quero fazer um auxiliar de depuração de desenho diferente aqui.

116
00:08:13,110 --> 00:08:19,140
‫Eu quero desenhar um ponto de depuração que você pode encontrar aqui, pega o mundo, pega uma posição e um

117
00:08:19,140 --> 00:08:20,370
‫tamanho e uma cor.

118
00:08:20,730 --> 00:08:24,360
‫E seja persistente ou não, provavelmente queremos que seja persistente, que seja visível.

119
00:08:24,810 --> 00:08:31,350
‫Então, devemos ser capazes de fazer algo nesse sentido, digamos, desenhar pontos de depuração e vamos fazer um

120
00:08:31,350 --> 00:08:37,800
‫mundo obter logo de cara aqui, e então começaremos com a localização de nossa janela de visualização,

121
00:08:37,800 --> 00:08:44,280
‫assim como um teste para ver como esse ponto de depuração de desenho funciona, dê-lhe tamanho para dar-lhe

122
00:08:44,400 --> 00:08:48,390
‫uma cor f de vermelho e torne sua persistência verdadeira.

123
00:08:48,390 --> 00:08:52,410
‫E então vamos para capital para o ponto e vírgula e ver se isso está funcionando.

124
00:08:52,410 --> 00:08:55,170
‫Vamos compilar no motor e vamos jogar.

125
00:08:55,950 --> 00:08:58,110
‫Então agora eu atiro e me movo ligeiramente para trás.

126
00:08:58,110 --> 00:08:59,430
‫Você pode ver que há um ponto aí.

127
00:08:59,760 --> 00:09:02,340
‫No entanto, é muito, muito pequeno e difícil de ver.

128
00:09:02,340 --> 00:09:06,780
‫Então eles vão aumentar isso para 20.

129
00:09:07,050 --> 00:09:08,040
‫Vamos ver se isso é melhor.

130
00:09:08,160 --> 00:09:09,360
‫Compile e jogue.

131
00:09:09,480 --> 00:09:09,720
‫Sim.

132
00:09:09,720 --> 00:09:12,780
‫Com certeza, agora posso ver um ponto muito, muito claro.

133
00:09:13,380 --> 00:09:16,680
‫Então é hora do seu desafio fazer um rastreamento de linha por canal.

134
00:09:16,920 --> 00:09:22,470
‫Já fizemos isso com tipos de objetos antes, então esperamos poder extrapolar isso para fazer isso por canal.

135
00:09:22,740 --> 00:09:28,020
‫Portanto, use o local e o fim que já definimos como início e fim.

136
00:09:28,620 --> 00:09:34,860
‫Verifique o sucesso do resultado fazendo uma instrução if apenas para obter o parâmetro out bem no parâmetro out

137
00:09:34,860 --> 00:09:38,880
‫do resultado do hit e apenas desenhar um ponto de depuração.

138
00:09:38,880 --> 00:09:44,910
‫Se acertarmos o ponto com sucesso e lembrarmos que estamos usando aquele canal que encontramos no ponto,

139
00:09:44,910 --> 00:09:46,020
‫qualquer arquivo também.

140
00:09:46,020 --> 00:09:50,820
‫Então, pause o vídeo e veja se você pode classificar todos esses parâmetros e argumentos no

141
00:09:51,150 --> 00:09:56,010
‫traço de linha e obter o desenho do ponto de depuração onde atingimos com nosso traço de linha.

142
00:09:56,820 --> 00:10:02,360
‫Agora, neste estágio, não estamos fazendo nada inteligente, como ignorar o ator jogador.

143
00:10:02,370 --> 00:10:07,800
‫Portanto, seu traço de linha pode acabar atingindo o jogador e tudo bem para este desafio.

144
00:10:08,160 --> 00:10:08,640
‫Pausar vídeo.

145
00:10:08,680 --> 00:10:09,000
‫Tente.

146
00:10:10,640 --> 00:10:10,990
‫OK.

147
00:10:11,000 --> 00:10:11,480
‫Bem vindo de volta.

148
00:10:11,810 --> 00:10:13,850
‫Então vamos mergulhar direto.

149
00:10:13,850 --> 00:10:18,380
‫Vamos pegar o mundo, em primeiro lugar, e uma flecha para isso.

150
00:10:18,380 --> 00:10:22,940
‫Vamos fazer um rastreamento de linha único por canal.

151
00:10:24,110 --> 00:10:25,850
‫Então vamos precisar de um resultado de acerto.

152
00:10:25,860 --> 00:10:32,600
‫Portanto, em parâmetros, precisamos primeiro declarar nossa estrutura de resultados de hit para passá-la como um parâmetro de aplicativo.

153
00:10:33,110 --> 00:10:37,520
‫Vai chamar de hit e eles vão passar como o primeiro argumento aqui.

154
00:10:37,970 --> 00:10:39,410
‫Então precisamos da localização.

155
00:10:40,470 --> 00:10:41,700
‫E precisamos do fim.

156
00:10:42,180 --> 00:10:43,410
‫E depois?

157
00:10:43,470 --> 00:10:44,370
‫O que vem a seguir?

158
00:10:44,370 --> 00:10:45,360
‫A colisão.

159
00:10:46,200 --> 00:10:47,220
‫Um canal de colisão.

160
00:10:47,580 --> 00:10:49,470
‫Então esse será um canal de colisão E.

161
00:10:49,470 --> 00:10:50,490
‫Cólon.

162
00:10:50,490 --> 00:10:53,550
‫E então deveria ser e c, o que dissemos?

163
00:10:53,560 --> 00:10:55,350
‫Vamos dar uma olhada no mecanismo padrão.

164
00:10:55,350 --> 00:11:01,140
‫Qualquer canal de rastreamento de jogo CC é aquele que o padrão qualquer configurou para perguntar.

165
00:11:01,440 --> 00:11:03,300
‫Há mais argumentos aqui que precisamos?

166
00:11:03,300 --> 00:11:04,500
‫Vamos junto.

167
00:11:04,860 --> 00:11:06,720
‫Temos os parâmetros de colisão que são padronizados.

168
00:11:06,720 --> 00:11:09,870
‫Então não, não precisamos de nada aqui.

169
00:11:10,350 --> 00:11:14,160
‫E então o que podemos fazer é que precisamos de um resultado booleano para isso.

170
00:11:14,160 --> 00:11:15,810
‫Então B sucesso.

171
00:11:16,970 --> 00:11:19,230
‫E parece muito útil, não é?

172
00:11:19,250 --> 00:11:20,120
‫Seja um sucesso.

173
00:11:20,780 --> 00:11:23,060
‫Digamos que um sucesso B.

174
00:11:24,230 --> 00:11:26,660
‫Vamos querer desenhar esse ponto de depuração.

175
00:11:26,660 --> 00:11:27,870
‫Então vamos mover isso para baixo.

176
00:11:27,890 --> 00:11:34,190
‫Eu posso fazer isso com Alt e então a seta move a linha assim, e então eu

177
00:11:34,760 --> 00:11:41,330
‫posso recuar com um controle e os colchetes direitos no seu teclado e isso faz com que pareça assim.

178
00:11:41,330 --> 00:11:46,490
‫E agora, em vez do local, que é o ponto de partida, na verdade queremos o local de acerto.

179
00:11:46,490 --> 00:11:50,060
‫Então, esse será o local de ponto atingido assim.

180
00:11:50,330 --> 00:11:54,500
‫E parece que está faltando um ponto e vírgula no final desta linha aqui.

181
00:11:54,650 --> 00:11:56,600
‫Vamos construir isso e tentar.

182
00:11:56,960 --> 00:12:02,440
‫Depois de compilar esta peça de sucesso, vá para o mundo e tente atirar em nossas paredes.

183
00:12:03,080 --> 00:12:03,620
‫Ai está.

184
00:12:03,620 --> 00:12:07,430
‫Você pode ver que temos um ponto aparecendo na parede exatamente onde eu atirei.

185
00:12:07,430 --> 00:12:08,750
‫Eu posso fazer isso várias vezes.

186
00:12:09,110 --> 00:12:16,010
‫Parece acertar se eu for muito longe de uma parede, não acerta porque nosso alcance máximo é bastante

187
00:12:16,010 --> 00:12:16,430
‫curto.

188
00:12:16,820 --> 00:12:20,990
‫E você pode ver uma vez que eu chego dentro do alcance máximo, ele acerta e desenha um ponto.

189
00:12:21,350 --> 00:12:23,900
‫Então esse é um desafio concluído com sucesso.

190
00:12:23,900 --> 00:12:29,090
‫Agora podemos mostrar e traçar uma linha até um ponto específico.

191
00:12:29,330 --> 00:12:35,390
‫O próximo passo será fazer com que isso realmente mostre alguns efeitos de partículas, o que será muito mais legal

192
00:12:35,450 --> 00:12:38,600
‫do que apenas desenhar um ponto de depuração para isso.

193
00:12:38,600 --> 00:12:39,950
‫Vejo você na próxima palestra.

