﻿1
00:00:04,610 --> 00:00:05,630
‫Olá e bem-vindo.

2
00:00:05,630 --> 00:00:12,230
‫Nesta palestra, vamos criar um novo componente em C++, esta caixa de gatilho, que nos informará

3
00:00:12,230 --> 00:00:16,850
‫quando entrarmos na alcova ou colocarmos qualquer objeto na alcova.

4
00:00:16,850 --> 00:00:20,690
‫Você pode ver que estamos recebendo uma pequena mensagem de planta no canto superior esquerdo.

5
00:00:21,170 --> 00:00:27,320
‫E para fazer isso, teremos que entender como as sobreposições, bloqueios e diferentes respostas de

6
00:00:27,320 --> 00:00:29,870
‫colisão se comportam no Unreal.

7
00:00:29,870 --> 00:00:31,460
‫Vamos mergulhar e descobrir.

8
00:00:32,570 --> 00:00:36,450
‫Agora já nos familiarizamos com o funcionamento dos canais de rastreamento.

9
00:00:36,470 --> 00:00:42,870
‫Sabemos que você pode ter respostas de rastreamento nos diferentes objetos em nossa cena, como este arbusto aqui.

10
00:00:42,890 --> 00:00:51,410
‫Você pode ver que ele tem uma resposta para ignorar os rastros de armas, mas bloqueia os rastros de visibilidade.

11
00:00:52,370 --> 00:00:58,370
‫Depois, há esse exemplo de vidro à prova de balas que bloqueia armas, mas permite visibilidade e uma parede

12
00:00:58,370 --> 00:01:00,050
‫de tijolos que bloqueia ambos.

13
00:01:00,350 --> 00:01:03,760
‫Assim você pode ver como este sistema funciona com canais de rastreamento.

14
00:01:03,770 --> 00:01:09,320
‫Agora, o que acontece se estivermos tentando decidir quais objetos podem se sobrepor?

15
00:01:09,560 --> 00:01:10,730
‫Quais passam?

16
00:01:10,760 --> 00:01:12,160
‫Quais bloqueiam um ao outro?

17
00:01:12,170 --> 00:01:14,420
‫Isso pode ficar um pouco mais complicado.

18
00:01:14,660 --> 00:01:21,380
‫Já vimos isso quando tentamos fazer com que a gárgula se sobrepusesse ao nosso peão.

19
00:01:21,740 --> 00:01:23,490
‫Agora, é assim que funciona.

20
00:01:23,510 --> 00:01:25,700
‫Essencialmente, usamos esses tipos de objeto.

21
00:01:26,450 --> 00:01:30,950
‫Cada objeto pode pertencer a um tipo de objeto específico.

22
00:01:31,220 --> 00:01:34,350
‫E isso é diferente do tipo de sistema de tipos em C++.

23
00:01:34,370 --> 00:01:36,500
‫Estes são tipos de colisão.

24
00:01:36,890 --> 00:01:43,580
‫Então você pode ter um objeto A, um objeto B, e em suas configurações, se dermos uma olhada nas configurações em

25
00:01:43,580 --> 00:01:48,770
‫nossa gárgula, por exemplo, você pode ver que eles têm seu próprio tipo de objeto.

26
00:01:48,770 --> 00:01:51,230
‫Este é um objeto estático mundial.

27
00:01:51,740 --> 00:01:56,120
‫Mas, mais abaixo, eles também têm suas respostas a outros tipos de objetos.

28
00:01:56,420 --> 00:02:00,320
‫Então você pode ver que este objeto bloqueará outras estáticas do mundo.

29
00:02:00,590 --> 00:02:02,690
‫Ele bloqueará outras dinâmicas mundiais.

30
00:02:03,050 --> 00:02:05,390
‫Ele irá sobrepor os tipos de peões.

31
00:02:05,750 --> 00:02:09,230
‫Ele bloqueará corpos físicos e praticamente bloqueará todos os outros tipos.

32
00:02:10,070 --> 00:02:16,070
‫E, obviamente, o próprio peão, se formos e encontrarmos nosso jogador BP.

33
00:02:17,070 --> 00:02:19,310
‫E olhe em seu componente cápsula.

34
00:02:19,320 --> 00:02:24,270
‫Veja os detalhes e role para baixo até onde temos uma predefinição de colisão.

35
00:02:24,270 --> 00:02:29,670
‫Se pudermos expandir a predefinição de puxar e colidir, não podemos editá-la, mas podemos ver o que ela está fazendo.

36
00:02:30,150 --> 00:02:34,380
‫E você pode ver que ele tem sua própria resposta à estática mundial.

37
00:02:34,380 --> 00:02:37,950
‫Portanto, sua resposta à estática mundial seria bloqueá-la.

38
00:02:38,370 --> 00:02:40,890
‫Então, na verdade, temos duas opções diferentes aqui.

39
00:02:41,130 --> 00:02:49,170
‫O peão está dizendo que eu bloqueio a estática do mundo, mas a gárgula está dizendo que eu sobreponho peões.

40
00:02:49,410 --> 00:02:50,430
‫Então o que deve acontecer?

41
00:02:50,790 --> 00:02:54,870
‫Bem, é aqui que entra esta tabela e eu tenho um link para esta postagem no blog,

42
00:02:54,870 --> 00:02:57,540
‫se você quiser lê-la na íntegra nos recursos da palestra.

43
00:02:57,960 --> 00:03:02,070
‫Então você pode ver que é preciso a menor interação de bloqueio entre os dois.

44
00:03:02,070 --> 00:03:08,880
‫Então, se o objeto A era o peão e está dizendo, hey, eu deveria bloquear aquela gárgula, mas as gárgulas objetam B e

45
00:03:08,880 --> 00:03:11,610
‫está dizendo, hey, eu deveria sobrepor aquele peão.

46
00:03:11,880 --> 00:03:15,690
‫Portanto, será necessário o menor bloqueio desses dois e se sobreporá.

47
00:03:16,320 --> 00:03:21,960
‫Portanto, isso significa que, se você deseja que duas coisas bloqueiem uma à outra, ambas precisam concordar que é isso

48
00:03:21,960 --> 00:03:23,040
‫que querem fazer.

49
00:03:23,340 --> 00:03:25,350
‫Então vamos ver outro exemplo aqui.

50
00:03:25,350 --> 00:03:31,350
‫Temos o jogador que é do tipo peão de objeto, e sua resposta de objeto a outros peões

51
00:03:31,350 --> 00:03:34,530
‫é bloqueá-los e objetos estáticos do mundo é bloqueá-los.

52
00:03:35,100 --> 00:03:37,650
‫A parede de tijolos é um objeto estático mundial.

53
00:03:37,740 --> 00:03:40,320
‫Ele pode bloquear peões e bloquear a estática do mundo.

54
00:03:40,320 --> 00:03:42,150
‫Então, esses dois concordariam um com o outro.

55
00:03:42,510 --> 00:03:46,160
‫Agora, o arbusto também é estático no mundo, mas se sobrepõe aos peões.

56
00:03:46,170 --> 00:03:50,040
‫É muito parecido com nossa gárgula, mas bloqueia a estática do mundo.

57
00:03:50,460 --> 00:03:56,730
‫Então, se você descer e dar uma olhada no que aconteceria, o peão tentaria viajar pelo mato e

58
00:03:56,730 --> 00:04:02,220
‫poderia, porque leva a opção de menor bloqueio, que é a sobreposição e gera um

59
00:04:02,220 --> 00:04:08,340
‫evento de sobreposição que podemos conectar no código ou blueprint, enquanto não será capaz de passar pela

60
00:04:08,340 --> 00:04:13,800
‫parede de tijolos e gerará um evento hit novamente, algo que podemos conectar em Blueprint

61
00:04:13,800 --> 00:04:14,640
‫ou C++.

62
00:04:15,000 --> 00:04:17,760
‫Então, por que eu entro em toda essa profundidade?

63
00:04:17,760 --> 00:04:25,770
‫Porque o que eu quero fazer é colocar um objeto que a gente é basicamente invisível dentro dessa parede que nos

64
00:04:25,770 --> 00:04:30,570
‫permite colocar a gárgula aqui e temos um evento quando isso acontece.

65
00:04:30,570 --> 00:04:36,150
‫Então, a gárgula vai sustentar um evento e dizer, Ei, eu tenho algo sobreposto comigo.

66
00:04:36,450 --> 00:04:37,830
‫Então, por que tudo isso é importante?

67
00:04:37,830 --> 00:04:44,640
‫Porque eu quero colocar um objeto que é invisível, mas vai se sobrepor à gárgula e nos informar sobre

68
00:04:44,640 --> 00:04:45,510
‫esse fato.

69
00:04:45,510 --> 00:04:50,310
‫Podemos então consultá-lo em C++ ou podemos obter eventos em blueprints de qualquer maneira.

70
00:04:50,490 --> 00:04:55,890
‫E a maneira como vamos fazer isso é, antes de tudo, criar uma planta desta parede de masmorra.

71
00:04:55,890 --> 00:05:01,200
‫Então, vou clicar no botão blueprint no painel de detalhes,

72
00:05:01,230 --> 00:05:10,050
‫criar uma nova subclasse, e vou chamá-la de BP, Underscore Secret Wall, e vamos clicar em selecionar para criá-la.

73
00:05:10,650 --> 00:05:15,240
‫E levou-o para a nossa janela principal e tem um motor nele.

74
00:05:15,270 --> 00:05:22,800
‫O que eu também quero adicionar aqui é essencialmente um componente que é chamado de colisão de caixa.

75
00:05:23,430 --> 00:05:27,630
‫Então, se clicarmos em uma colisão de caixa, você verá que ela é completamente invisível.

76
00:05:28,080 --> 00:05:32,820
‫Ele apenas fornece algumas extensões de caixa que podemos alterar.

77
00:05:32,820 --> 00:05:39,330
‫Podemos torná-los maiores para que em qualquer lugar onde colocarmos a gárgula nesta caixa, ela a aceite.

78
00:05:40,320 --> 00:05:44,850
‫E podemos ver que tem opções de colisão aqui embaixo.

79
00:05:44,850 --> 00:05:49,170
‫Temos uma sobreposição toda dinâmica como padrão, mas como a predefinição padrão.

80
00:05:49,170 --> 00:05:54,600
‫Mas se for personalizado, você pode ver que podemos alterar os tipos de objeto e podemos alterar a forma como ele

81
00:05:54,900 --> 00:05:56,340
‫responde a coisas diferentes aqui.

82
00:05:56,520 --> 00:06:04,140
‫E acho que o mais importante, como você pode ver, está configurado para se sobrepor à maioria dos tipos de objetos, o que significa

83
00:06:04,140 --> 00:06:09,810
‫que, mesmo que eles não estejam configurados para se sobreporem à dinâmica do mundo, eles se sobreporão.

84
00:06:09,810 --> 00:06:14,070
‫Não vai bloquear nada que nos permita posicionar a gárgula aqui.

85
00:06:14,340 --> 00:06:20,670
‫Então, vou deletar esse componente da cena porque queremos fazer é criar um novo

86
00:06:20,670 --> 00:06:24,660
‫componente em C++ baseado nessa colisão de caixa.

87
00:06:24,780 --> 00:06:31,050
‫Agora eu só quero mostrar a vocês que com esta caixa, se voltarmos para a predefinição padrão

88
00:06:31,050 --> 00:06:38,940
‫em que estava, que era sobrepor toda dinâmica eu acredito e verificamos ou como já está marcado na verdade gerar eventos de sobreposição

89
00:06:38,940 --> 00:06:40,140
‫já está marcado.

90
00:06:40,590 --> 00:06:48,570
‫Então podemos ir para o nosso gráfico de eventos e podemos clicar com o botão direito aqui e procurar por sobreposição.

91
00:06:48,870 --> 00:06:56,400
‫E bem no topo, você pode ver um componente adicional que começa a se sobrepor para a caixa.

92
00:06:56,400 --> 00:07:07,170
‫Então, se clicarmos nele e realmente renomearmos o componente da caixa para a área de acionamento assim, basicamente, se sobrepusermos à área de

93
00:07:07,170 --> 00:07:14,370
‫acionamento, obteremos uma lista de propriedades da coisa que está se sobrepondo a nós, para

94
00:07:14,370 --> 00:07:16,350
‫que possamos pegar o.

95
00:07:16,790 --> 00:07:17,840
‫Está se sobrepondo com as crianças.

96
00:07:17,870 --> 00:07:19,460
‫Obtenha seu nome.

97
00:07:19,730 --> 00:07:27,110
‫Então, obter o nome de exibição é o nome do nó e, em seguida, podemos pegar isso e imprimir a string de resultado

98
00:07:27,230 --> 00:07:32,330
‫e conectá-la ao pino de execução e podemos seguir em frente e clicar em play.

99
00:07:32,630 --> 00:07:40,130
‫E se caminharmos até a área, você pode ver que está dizendo que o tocador de bipe é a coisa que se sobrepõe a ele.

100
00:07:40,130 --> 00:07:42,050
‫Agora ele não pode ver o erro porque está muito escuro.

101
00:07:42,050 --> 00:07:50,570
‫Então eu vou para a parede secreta novamente e um bipe e eu vou adicionar um componente de luz spot, que eu

102
00:07:51,380 --> 00:07:57,890
‫vou colocar nesta pequena alcova girando sua face para baixo e iluminando o espaço onde nós

103
00:07:58,010 --> 00:07:59,420
‫quer o objeto.

104
00:07:59,750 --> 00:08:01,760
‫Agora, na cena, podemos vê-lo muito claramente.

105
00:08:02,000 --> 00:08:06,500
‫Então vamos em frente e aperte o play e podemos caminhar até aquela alcova.

106
00:08:06,500 --> 00:08:14,240
‫Se o sobrepusermos, ele diz que há o tocador de bipe se sobrepondo e

107
00:08:14,240 --> 00:08:23,720
‫podemos pegar nossa gárgula desta cela usando nossa garra recém-cunhada, e podemos pegar essa gárgula e colocá-la nesta área.

108
00:08:24,320 --> 00:08:33,590
‫No entanto, não parece estar gerando nenhum evento de sobreposição, e isso porque, assim como precisamos, há duas

109
00:08:33,590 --> 00:08:35,480
‫partes na colisão.

110
00:08:35,480 --> 00:08:38,270
‫Há também duas partes para gerar eventos de sobreposição.

111
00:08:38,660 --> 00:08:45,620
‫Então, só porque nós o habilitamos nesse componente de caixa não significa que a gárgula se movendo para ele

112
00:08:45,620 --> 00:08:48,770
‫realmente nos alertará sobre qualquer evento de sobreposição.

113
00:08:48,780 --> 00:08:54,950
‫Então o que temos que fazer é ir até a gárgula e verificar seus eventos de sobreposição também.

114
00:08:55,460 --> 00:08:58,490
‫Então, os eventos de sobreposição devem acontecer.

115
00:08:58,490 --> 00:09:06,470
‫Vamos pegar a gárgula, levá-la até a alcova e enfiá-la.

116
00:09:06,470 --> 00:09:09,170
‫E agora temos um evento chegando.

117
00:09:09,560 --> 00:09:14,150
‫Quando isso acontece, a estátua da Gárgula está de fato sendo registrada.

118
00:09:14,330 --> 00:09:19,280
‫Agora, não quero usar eventos de blueprint neste caso específico.

119
00:09:19,280 --> 00:09:26,960
‫Então, o que eu quero fazer é pegar nosso componente de área de gatilho e realmente transformá-lo em algum componente C++ que

120
00:09:26,960 --> 00:09:32,570
‫possa avaliar se ele tem a estátua Gargoyle que deseja ou se já não está nele.

121
00:09:33,230 --> 00:09:37,940
‫A maneira como vamos fazer isso é ir para os componentes ADD, criar novos componentes C++.

122
00:09:38,270 --> 00:09:44,480
‫E como a classe pai, em vez de escolher o componente ACT ou

123
00:09:44,480 --> 00:09:50,810
‫os componentes da cena, iremos para todas as classes e procuraremos o componente box.

124
00:09:50,990 --> 00:09:55,340
‫E você pode ver os componentes de forma, componentes de caixa, o que queremos e podemos ir em frente e clicar

125
00:09:55,340 --> 00:09:55,910
‫em próximo.

126
00:09:56,150 --> 00:10:00,320
‫Portanto, gostaria de desafiá-lo a criar este componente agora que mostrei como definir a classe

127
00:10:00,320 --> 00:10:00,770
‫pai.

128
00:10:01,100 --> 00:10:06,980
‫Então você vai chamá-lo de componentes de gatilho e terá que copiar algumas coisas dos outros componentes que

129
00:10:06,980 --> 00:10:10,070
‫criamos porque não está configurado da mesma maneira.

130
00:10:10,280 --> 00:10:15,050
‫Visto que estamos derivando de um pai diferente, você não precisa copiar o alinhamento de sua classe.

131
00:10:15,260 --> 00:10:20,570
‫Essa linha inteira está basicamente vazia no componente de gatilho conforme você a cria.

132
00:10:20,570 --> 00:10:28,370
‫Portanto, copie isso do seu grabber ou do seu movedor e, caso contrário, você não poderá adicionar seus componentes

133
00:10:28,670 --> 00:10:30,140
‫aos seus projetos.

134
00:10:30,140 --> 00:10:39,440
‫Então você deve usar esses novos componentes de gatilho para substituir nossos componentes de caixa atuais e imprimir algo de Begin

135
00:10:39,440 --> 00:10:40,670
‫Play novamente.

136
00:10:41,000 --> 00:10:46,280
‫Begin Play não será configurado automaticamente para você, então você terá que copiar do arquivo de

137
00:10:46,280 --> 00:10:50,120
‫cabeçalho e do arquivo C++ de nossos outros componentes para configurá-lo.

138
00:10:50,510 --> 00:10:52,160
‫Pause o vídeo e vá em frente.

139
00:10:55,490 --> 00:10:56,020
‫OK.

140
00:10:56,030 --> 00:10:56,970
‫Bem vindo de volta.

141
00:10:56,990 --> 00:11:02,090
‫Então, vou chamá-lo de componentes de gatilho, todos com uma palavra e um clique para criar a classe.

142
00:11:02,360 --> 00:11:08,450
‫Então, como previsto, uma nova linha de classe não tem nada dentro dos parênteses.

143
00:11:08,450 --> 00:11:15,210
‫E se dermos uma olhada no nosso editor e formos para o BP secret, tentaremos adicionar este componente

144
00:11:15,240 --> 00:11:16,610
‫search for trigger.

145
00:11:17,120 --> 00:11:19,100
‫Você pode ver que nada aparece.

146
00:11:19,430 --> 00:11:25,160
‫E a razão para isso é que, se formos até eu pegar um ponto H e tivermos que olhar para sua linha de

147
00:11:25,640 --> 00:11:30,050
‫classe, você pode ver que há um pouco aqui que diz um blueprint spawn de um componente.

148
00:11:30,500 --> 00:11:33,080
‫Então, crucialmente, precisamos copiar isso.

149
00:11:33,080 --> 00:11:34,280
‫Ele também tem um grupo de classe.

150
00:11:34,280 --> 00:11:40,460
‫Podemos também copiar a coisa toda porque isso nos permite criar esses componentes no blueprint para que

151
00:11:40,470 --> 00:11:45,200
‫possamos colar isso como a linha de classe para o componente de gatilho.

152
00:11:45,920 --> 00:11:48,980
‫E então a outra coisa, se formos pegá-lo, você pode ver que ele começou a tocar.

153
00:11:49,220 --> 00:11:55,880
‫Está dentro de uma seção protegida e podemos apenas copiar a definição dessa função de início

154
00:11:55,880 --> 00:12:02,780
‫de reprodução, copiá-la em nossos componentes de gatilho e colocá-la como estava no grabber, logo abaixo do corpo

155
00:12:02,780 --> 00:12:03,350
‫gerado.

156
00:12:03,800 --> 00:12:08,420
‫Então podemos ir ao nosso pegar um CP e ver quão grande em jogo foi definido.

157
00:12:08,420 --> 00:12:12,440
‫Aqui você pode ver que tem esse jogo legal de super começar que é realmente importante.

158
00:12:12,740 --> 00:12:15,860
‫Então, vamos copiar isso, passar para um componente de gatilho.

159
00:12:15,860 --> 00:12:27,320
‫CP E nós vamos mudar o você pega dois pontos para seu componente de gatilho, comece a jogar e então aqui nós

160
00:12:27,320 --> 00:12:35,000
‫podemos colocar um novo log e vamos escrever uma mensagem simples, como componente de gatilho

161
00:12:35,150 --> 00:12:35,870
‫vivo.

162
00:12:36,620 --> 00:12:38,090
‫Vamos em frente e compilar.

163
00:12:38,090 --> 00:12:42,710
‫Isso pode demorar um pouco, já que fizemos algumas mudanças bastante significativas em nosso arquivo principal.

164
00:12:42,950 --> 00:12:48,830
‫E uma vez feito isso, podemos entrar em nossa parede secreta da BP, adicionar e procurar por gatilho.

165
00:12:49,430 --> 00:12:51,860
‫E aqui você pode ver que temos esse componente de gatilho.

166
00:12:52,160 --> 00:12:53,660
‫Agora podemos adicionar isso.

167
00:12:53,660 --> 00:12:58,760
‫Podemos remover nossa área de gatilho que configuramos anteriormente.

168
00:12:59,210 --> 00:13:03,710
‫Apenas vá em frente e exclua isso e verifique se queremos excluí-lo.

169
00:13:03,710 --> 00:13:09,140
‫Isso basicamente invalidará esse evento que criamos e podemos verificar se as colisões estão configuradas como

170
00:13:09,140 --> 00:13:11,870
‫queremos no gatilho, se formos dar uma olhada.

171
00:13:11,870 --> 00:13:15,590
‫Sim, está configurado para sobrepor toda a dinâmica e gerar eventos de sobreposição.

172
00:13:15,980 --> 00:13:21,860
‫E, finalmente, o que precisamos substituir é este evento aqui onde vamos selecionar nosso

173
00:13:21,860 --> 00:13:31,310
‫gatilho com o botão direito do mouse e ir para desfraldar o evento add para Trigger Collision e adicionar nosso próprio componente começar a sobreposição.

174
00:13:31,310 --> 00:13:32,780
‫Isso é o que estávamos usando antes.

175
00:13:33,200 --> 00:13:41,090
‫Conecte o pino ativo e conecte o pino de execução para ir para o nível da masmorra.

176
00:13:41,660 --> 00:13:47,840
‫Vá e pegue a gárgula, tente enfiá-la na alcova e notamos que não está funcionando.

177
00:13:48,110 --> 00:13:50,300
‫Então agora temos esse gatilho configurado.

178
00:13:50,300 --> 00:13:55,150
‫Vamos para a viewport e você pode ver que na verdade o trigger não foi feito.

179
00:13:55,160 --> 00:13:56,300
‫Não foi feito grande o suficiente.

180
00:13:56,300 --> 00:13:57,650
‫Não o posicionamos corretamente.

181
00:13:57,650 --> 00:14:06,320
‫Então vamos posicioná-lo no centro da alcova e vamos aumentar as propriedades de extensão da caixa para que peguemos o

182
00:14:06,710 --> 00:14:11,540
‫que quer que tenhamos colocado dentro dessa área da alcova.

183
00:14:12,510 --> 00:14:17,570
‫Não importa se é um pouco maior e nos dá uma margem de segurança, então podemos entrar na

184
00:14:17,840 --> 00:14:20,150
‫masmorra, apertar play e depois entrar na alcova.

185
00:14:20,150 --> 00:14:25,190
‫E com certeza, ele detecta que o jogador BP entrou naquela alcova.

186
00:14:25,370 --> 00:14:25,910
‫Coisas boas.

187
00:14:25,910 --> 00:14:31,370
‫Nesta palestra, aprendemos tudo sobre tipos de objeto e respostas de tipo de objeto, e usamos

188
00:14:31,370 --> 00:14:34,010
‫isso para configurar esse componente de gatilho.

189
00:14:34,040 --> 00:14:35,720
‫Vejo você na próxima palestra.

