﻿1
00:00:04,380 --> 00:00:09,780
‫Gostaríamos que a câmera tremesse assim que nosso projétil atingisse, algo assim.

2
00:00:09,780 --> 00:00:13,680
‫E também gostaríamos que sacudisse quando um de nossos lagos morresse.

3
00:00:14,040 --> 00:00:15,460
‫Ei, bem-vindo de volta.

4
00:00:15,480 --> 00:00:22,140
‫Neste vídeo, vamos adicionar outro tipo especial de efeito ao nosso jogo envolvendo sacudir a

5
00:00:22,140 --> 00:00:22,950
‫câmera.

6
00:00:22,950 --> 00:00:28,890
‫Gostaríamos de sacudir a câmera quando o projétil atinge algo, assim como quando um de nossos

7
00:00:28,890 --> 00:00:29,670
‫lagos morre.

8
00:00:29,700 --> 00:00:36,480
‫Isso adicionará apenas mais um toque final ao jogo que fará com que pareça um pouco mais profissional.

9
00:00:36,480 --> 00:00:38,610
‫Então vamos mergulhar agora.

10
00:00:38,610 --> 00:00:45,060
‫Aqui estamos dentro do editor e gostaria de adicionar uma nova classe para nossa trepidação de câmera.

11
00:00:45,060 --> 00:00:49,440
‫O Unreal Engine possui uma classe integrada para agitar a câmera.

12
00:00:49,440 --> 00:00:55,590
‫Agora vou fazer uma nova pasta aqui na pasta blueprints e chamar isso de camera shake.

13
00:00:55,590 --> 00:00:57,630
‫E na pasta de vibração da câmera.

14
00:00:57,630 --> 00:01:00,450
‫Vou clicar com o botão direito e criar um novo blueprint.

15
00:01:00,480 --> 00:01:05,580
‫A razão pela qual estamos fazendo um blueprint é porque essa é uma daquelas coisas que

16
00:01:05,580 --> 00:01:12,900
‫é muito mais fácil de fazer do lado do blueprint, pois há muitas variáveis para ajustar com as trepidações da câmera, e a classe que

17
00:01:12,900 --> 00:01:18,060
‫estamos procurando é a matinée camera agitar para que possamos procurar a vibração da câmera e escolher.

18
00:01:18,060 --> 00:01:20,160
‫Trepidação da câmera matinée.

19
00:01:20,980 --> 00:01:24,790
‫Clique em Selecionar e chamaremos este primeiro movimento da câmera.

20
00:01:25,060 --> 00:01:27,890
‫BP Hit Camera Shake.

21
00:01:27,910 --> 00:01:34,240
‫Agora vamos clicar duas vezes neste novo blueprint e abri-lo e veremos que ele tem um painel

22
00:01:34,240 --> 00:01:37,300
‫de detalhes com muitas variáveis diferentes para escolher.

23
00:01:37,310 --> 00:01:42,350
‫E vamos falar sobre alguns desses parâmetros que existem na classe de trepidação da câmera.

24
00:01:42,370 --> 00:01:48,160
‫Agora, existem alguns aqui, e vamos tocar apenas em alguns que afetam a sensação geral

25
00:01:48,160 --> 00:01:49,880
‫da vibração da câmera.

26
00:01:49,900 --> 00:01:53,140
‫Agora você verá que há uma seção chamada oscilação.

27
00:01:53,140 --> 00:01:59,710
‫E a razão pela qual esta seção é chamada de oscilação é porque uma trepidação da câmera envolve oscilar

28
00:01:59,710 --> 00:02:00,430
‫a câmera.

29
00:02:00,670 --> 00:02:04,370
‫Agora, aqui está a página da Wikipedia para uma onda senoidal.

30
00:02:04,390 --> 00:02:11,650
‫Uma onda senoidal é uma função matemática, e não precisamos entender a matemática por trás de uma onda senoidal.

31
00:02:11,650 --> 00:02:14,850
‫Mas ajuda ver como é uma onda senoidal.

32
00:02:14,860 --> 00:02:23,230
‫Se eu rolar para baixo aqui para a direita, vejo esta onda vermelha aqui e é rotulada como senoidal, uma onda senoidal

33
00:02:23,260 --> 00:02:24,010
‫oscila.

34
00:02:24,010 --> 00:02:26,920
‫Isso significa que ele vai para cima e para baixo ou para frente e para trás.

35
00:02:26,920 --> 00:02:33,610
‫Então, se nossa câmera está sendo empurrada para frente e para trás de maneira suave, dizemos que ela está oscilando.

36
00:02:33,610 --> 00:02:39,940
‫Agora vemos que temos uma duração de oscilação e um tempo de mesclagem e um tempo de mesclagem.

37
00:02:39,940 --> 00:02:44,620
‫A duração afeta quanto tempo o shake vai durar.

38
00:02:44,650 --> 00:02:50,140
‫Agora, esses são valores com os quais você pode experimentar, mas eu já fiz algumas experiências e

39
00:02:50,140 --> 00:02:53,560
‫conheço alguns bons valores aproximados para a vibração da câmera.

40
00:02:53,560 --> 00:02:58,270
‫Quando o projétil atingir algo, teremos uma duração relativamente curta.

41
00:02:58,330 --> 00:03:05,470
‫Agora, isso é em segundos, e vou escolher 0. 2 5 segundos para a duração desta vibração da câmera e

42
00:03:05,470 --> 00:03:08,080
‫para o tempo de mistura e de mistura.

43
00:03:08,080 --> 00:03:18,220
‫Vou usar valores de 0. 05, então 0. 05 para mistura no tempo e 0. 05 para o tempo de mistura.

44
00:03:18,340 --> 00:03:25,360
‫Este é o tempo que leva para misturar dentro e fora da trepidação da câmera, que durará 0. 2 5 segundos.

45
00:03:25,390 --> 00:03:28,330
‫Agora temos diferentes tipos de oscilações.

46
00:03:28,330 --> 00:03:35,500
‫Temos oscilações rotacionais, e elas irão girar a câmera de acordo com essa função de oscilação.

47
00:03:35,500 --> 00:03:42,430
‫Nós temos uma oscilação de localização que movimentará a câmera no espaço e uma oscilação do campo de visão, que

48
00:03:42,430 --> 00:03:48,130
‫afetará o campo de visão, que é basicamente aumentar e diminuir o zoom com a câmera.

49
00:03:48,160 --> 00:03:54,700
‫Agora, as oscilações de rotação e campo de visão são as mais propensas a causar enjoo.

50
00:03:54,700 --> 00:03:57,700
‫Então você pode experimentar com aqueles, se quiser.

51
00:03:57,700 --> 00:04:03,100
‫Mas para esta trepidação da câmera, vamos apenas alterar a oscilação do local.

52
00:04:03,130 --> 00:04:10,300
‫Agora temos três eixos X, Y e Z, e vimos que a onda senoidal vai sacudir algo para frente e para trás.

53
00:04:10,300 --> 00:04:16,210
‫Essas oscilações irão empurrar a câmera para frente e para trás nas direções X, Y e z.

54
00:04:16,210 --> 00:04:22,540
‫Vou clicar nestes menus suspensos para expandi-los e veremos que cada eixo tem uma amplitude, uma frequência,

55
00:04:22,540 --> 00:04:26,740
‫bem como um deslocamento inicial e uma forma de onda.

56
00:04:26,740 --> 00:04:33,460
‫Agora, o deslocamento inicial para a trepidação da câmera é definido como aleatório, e podemos deixá-lo aleatoriamente para

57
00:04:33,460 --> 00:04:36,310
‫que tenhamos menos trepidação previsível da câmera.

58
00:04:36,310 --> 00:04:41,110
‫E a onda senoidal é o tipo de forma de onda usada ao sacudir a câmera.

59
00:04:41,110 --> 00:04:45,070
‫E vimos que tem um movimento suave para cima e para baixo.

60
00:04:45,070 --> 00:04:51,450
‫Agora a amplitude é a quantidade máxima de movimento nesse eixo que a câmera irá mover.

61
00:04:51,460 --> 00:04:59,680
‫Vou definir esses três para terem amplitudes de dez, um X, Y e z e a frequência será a

62
00:04:59,680 --> 00:05:02,800
‫rapidez com que a câmera oscila.

63
00:05:02,800 --> 00:05:05,650
‫Vou definir estes também para serem dez.

64
00:05:05,740 --> 00:05:10,840
‫Agora vamos ver como isso fica assim que implementarmos a vibração da câmera.

65
00:05:10,840 --> 00:05:16,900
‫Mas antes de fazermos isso, vou criar outro movimento de câmera e isso será para quando o

66
00:05:16,900 --> 00:05:17,680
‫peão morrer.

67
00:05:17,680 --> 00:05:25,540
‫Então, vamos clicar com o botão direito, criar uma nova classe de blueprint e procurar por trepidação da câmera e selecionar trepidação da

68
00:05:25,540 --> 00:05:27,400
‫câmera matinée, clique em selecionar.

69
00:05:27,400 --> 00:05:31,600
‫E para isso, vamos chamar isso de BP Depth Camera Shake.

70
00:05:32,320 --> 00:05:38,430
‫Agora, a vibração da câmera da morte será um pouco mais violenta do que a vibração da câmera atingida.

71
00:05:38,440 --> 00:05:42,460
‫A vibração da câmera abalará a câmera quando nosso projétil atingir algo.

72
00:05:42,460 --> 00:05:47,360
‫Mas a vibração da câmera da morte vai sacudir a câmera quando algo morrer.

73
00:05:47,380 --> 00:05:51,940
‫Então, para a duração da oscilação, vou fazer isso um pouco mais.

74
00:05:51,940 --> 00:05:57,040
‫Eu vou 4. 3, 5 segundos e quatro, mistura no tempo e no tempo.

75
00:05:57,040 --> 00:06:00,070
‫Vou definir ambos para 0. 1.

76
00:06:01,000 --> 00:06:03,820
‫Agora, apenas uma nota lateral se mistura dentro e fora do tempo.

77
00:06:03,820 --> 00:06:07,990
‫As porcentagens do tempo integral estão normalizadas entre zero e um?

78
00:06:07,990 --> 00:06:12,460
‫Portanto, o ponto um é 10% da duração total da oscilação.

79
00:06:12,490 --> 00:06:21,430
‫Agora vou definir as amplitudes para 54 X e Y e vou deixar a amplitude Z em zero para que apenas

80
00:06:21,430 --> 00:06:26,060
‫puxemos a câmera em X e Y após a morte.

81
00:06:26,080 --> 00:06:29,130
‫Dessa forma, teremos uma trepidação de câmera um pouco diferente.

82
00:06:29,140 --> 00:06:33,280
‫E para a frequência, vou definir ambos para 20.

83
00:06:35,440 --> 00:06:41,890
‫Portanto, agora temos uma vibração de câmera e é hora de implementar a reprodução dessas vibrações de

84
00:06:41,890 --> 00:06:43,810
‫câmera do lado C++.

85
00:06:44,470 --> 00:06:49,480
‫Agora, para reproduzir uma trepidação da câmera, precisamos de algumas variáveis de trepidação da câmera.

86
00:06:49,510 --> 00:06:56,140
‫Se você estiver usando uma versão mais antiga do Unreal Engine, o Unreal Engine 4. 25 e abaixo especificamente, então a classe

87
00:06:56,140 --> 00:06:58,700
‫para suas variáveis será você.

88
00:06:58,720 --> 00:06:59,760
‫Vibração da câmera.

89
00:06:59,770 --> 00:07:03,040
‫Mas nas versões mais recentes 4. 2, seis e acima.

90
00:07:03,040 --> 00:07:05,400
‫E isso inclui o Unreal Engine cinco.

91
00:07:05,410 --> 00:07:07,330
‫Nós vamos usar você matinê.

92
00:07:07,360 --> 00:07:08,260
‫Vibração da câmera.

93
00:07:08,260 --> 00:07:10,690
‫Então é isso que vamos usar neste vídeo.

94
00:07:10,990 --> 00:07:14,670
‫Agora, as funções para reproduzir uma vibração da câmera também são diferentes.

95
00:07:14,680 --> 00:07:19,810
‫Se você estiver no 4. 2, cinco e abaixo, então a função que você vai usar é a reprodução do cliente.

96
00:07:19,840 --> 00:07:20,800
‫Vibração da câmera.

97
00:07:21,190 --> 00:07:29,080
‫E esta é uma função na classe do controlador do jogador agora em 4. 26 e acima, incluindo 5. 0, que é o que

98
00:07:29,080 --> 00:07:30,220
‫estamos usando.

99
00:07:30,220 --> 00:07:34,510
‫Vamos usar a vibração da câmera inicial do cliente como jogo do cliente.

100
00:07:34,540 --> 00:07:36,940
‫A vibração da câmera agora está obsoleta.

101
00:07:37,060 --> 00:07:42,130
‫Então, como estamos usando o Unreal Engine cinco, usaremos clientes, inicie a vibração da câmera.

102
00:07:42,130 --> 00:07:47,170
‫E se você estiver usando cinco, você seguirá e usará os clientes para iniciar a trepidação da câmera.

103
00:07:47,170 --> 00:07:54,460
‫Mas para a versão mais antiga do motor, especificamente 4. 2, cinco e abaixo, use a classe e a

104
00:07:54,460 --> 00:08:00,250
‫função do lado esquerdo e todos os outros usem a classe e a função à direita.

105
00:08:00,580 --> 00:08:07,780
‫Agora, apenas para mostrar a você, aqui está a base de vibração da câmera na documentação e aqui está a inclusão dela.

106
00:08:07,780 --> 00:08:14,050
‫Então você vai usar esta base de vibração de câmera de barra de câmera para a inclusão.

107
00:08:14,200 --> 00:08:18,660
‫Então, primeiro, eu gostaria de lidar com a trepidação da câmera na classe de projéteis.

108
00:08:18,670 --> 00:08:22,870
‫Então aqui no projétil, vou adicionar uma vibração de câmera.

109
00:08:23,110 --> 00:08:25,060
‫Agora, isso será declarado para a frente.

110
00:08:25,060 --> 00:08:26,410
‫Eu vou fazer um U.

111
00:08:26,440 --> 00:08:27,940
‫Base de vibração da câmera.

112
00:08:27,940 --> 00:08:29,050
‫É um ponteiro.

113
00:08:29,140 --> 00:08:35,350
‫E eu vou chamar este hit de câmera shake agora porque eu gostaria de definir isso a partir de plantas.

114
00:08:35,350 --> 00:08:38,800
‫Já que temos um modelo de vibração da câmera, vou expor isso.

115
00:08:38,830 --> 00:08:40,480
‫Vai ser uma nova propriedade.

116
00:08:40,520 --> 00:08:44,200
‫Vou editá-lo em qualquer lugar e dar-lhe uma categoria.

117
00:08:44,830 --> 00:08:48,410
‫E para isso, vou mantê-lo na seção de combate.

118
00:08:48,430 --> 00:08:51,670
‫Agora estou pronto para jogar a trepidação da câmera.

119
00:08:51,850 --> 00:09:00,100
‫Então, em CP de projéteis, vou colocar isso no acerto aqui no cheque para outro ator.

120
00:09:00,100 --> 00:09:05,620
‫E a primeira coisa que vou fazer é ter certeza de que configurei a vibração da câmera a partir de

121
00:09:05,620 --> 00:09:10,540
‫plantas, o que significa que preciso ter certeza de que a vibração da câmera não é nula.

122
00:09:10,840 --> 00:09:15,220
‫Então, se eu acertar a vibração da câmera, posso iniciar a vibração da câmera.

123
00:09:15,960 --> 00:09:23,310
‫E aqui está um cliente de controlador de jogador iniciar a trepidação da câmera para as versões 4. 26 e acima.

124
00:09:23,340 --> 00:09:24,990
‫Agora observe algumas coisas.

125
00:09:25,020 --> 00:09:30,720
‫Elas envolvem duas subclasses de variáveis, o que significa que precisamos de uma nova classe.

126
00:09:30,750 --> 00:09:37,950
‫Agora criamos blueprints para essas variáveis, o que significa que podemos facilmente criar uma subclasse de

127
00:09:37,950 --> 00:09:40,190
‫uma variável regular aqui.

128
00:09:40,200 --> 00:09:49,650
‫Então eu posso pegar essa classe sua base de vibração da câmera e colocá-la dentro de uma subclasse PT de então vamos dizer subclasse PT de e eu

129
00:09:49,650 --> 00:09:56,220
‫vou manter a declaração de encaminhamento aqui e eu não preciso do asterisco já que a subclasse PT de

130
00:09:56,220 --> 00:10:03,480
‫apenas envolve isso no modelo e porque esse hit camera shake é na verdade uma subclasse PT de eu vou chamá-lo

131
00:10:03,510 --> 00:10:10,170
‫de hit camera shake class e agora no projétil esse CPP em vez de hit camera shake vamos chamar

132
00:10:10,200 --> 00:10:16,350
‫isso de hit camera shake class e agora podemos chamar um cliente iniciar a trepidação da câmera.

133
00:10:16,530 --> 00:10:23,100
‫Agora esta função pertence ao controlador do jogador e estamos aqui no CP do projétil e não temos uma variável

134
00:10:23,100 --> 00:10:29,670
‫para o controlador do jogador, mas temos essa função get primeiro controlador do jogador que existe na classe mundial

135
00:10:29,670 --> 00:10:36,000
‫U para que possamos chamar get world e, em seguida, ligue para obter o controlador do primeiro jogador.

136
00:10:36,000 --> 00:10:37,470
‫Então nós vamos fazer isso.

137
00:10:37,470 --> 00:10:45,030
‫Então, primeiro vamos chamar Git World e de lá vamos chamar get first player controller e de get

138
00:10:45,030 --> 00:10:52,140
‫first player controller, podemos chamar um client start camera shake e veremos que isso leva uma

139
00:10:52,140 --> 00:10:59,610
‫subclasse PT de we 'vamos passar na classe de vibração da câmera e o restante desses parâmetros

140
00:10:59,610 --> 00:11:04,980
‫de entrada têm valores padrão para que possamos omitir as entradas restantes.

141
00:11:04,980 --> 00:11:07,260
‫Então vamos em frente e compilar isso.

142
00:11:07,860 --> 00:11:11,010
‫Então, aqui no editor, estamos prontos para testar isso.

143
00:11:11,010 --> 00:11:16,320
‫Agora criamos o blueprint e a subclasse PT de, mas precisamos definir essa subclasse PT de.

144
00:11:16,320 --> 00:11:20,130
‫Então vamos aos atores e projéteis BP.

145
00:11:20,160 --> 00:11:26,160
‫Eu vou abrir o editor de blueprint completo e ir para a seção de combate e aqui está

146
00:11:26,160 --> 00:11:33,780
‫minha classe t subclasse de hit camera shake de eu posso abrir isso e selecionar hit camera shake e agora isso será definido.

147
00:11:33,780 --> 00:11:39,660
‫Então vou compilar pressione play e vamos ver se a câmera balança.

148
00:11:41,140 --> 00:11:42,580
‫E lá vai.

149
00:11:43,300 --> 00:11:44,110
‫Incrível.

150
00:11:44,800 --> 00:11:48,700
‫Então, em seguida, quero reproduzir uma vibração da câmera quando o pod morrer.

151
00:11:48,700 --> 00:11:54,410
‫Então eu vou entrar no lago de baixo e adicionar uma variável de vibração da câmera aqui.

152
00:11:54,430 --> 00:11:59,950
‫Então aqui embaixo, vamos fazer outra t subclasse de variável.

153
00:11:59,980 --> 00:12:01,480
‫Eu vou para a frente declará-lo.

154
00:12:01,480 --> 00:12:09,490
‫Vai ser sua base de trepidação da câmera e eu vou chamar isso de classe de trepidação da câmera de profundidade.

155
00:12:09,700 --> 00:12:13,720
‫E assim como o nosso outro, vamos fazer desta uma propriedade U.

156
00:12:14,290 --> 00:12:24,280
‫Edit Anywhere Category combat e agora temos uma camera shake class aqui na base pon.

157
00:12:24,610 --> 00:12:30,550
‫Agora eu vou desafiá-lo a tocar o movimento da câmera da morte para o peão quando ele morrer.

158
00:12:30,550 --> 00:12:35,560
‫Então você vai fazer isso quando o -- morrer e isso vai lidar com a destruição, é claro.

159
00:12:35,560 --> 00:12:42,490
‫Portanto, escolha o local correto nesta função para reproduzir esta trepidação da câmera e então compile seu código.

160
00:12:42,490 --> 00:12:48,910
‫Defina a subclasse de valor nas classes de projeto de tanque e torre e teste-a.

161
00:12:48,910 --> 00:12:51,520
‫Pause o vídeo e implemente a câmera da morte.

162
00:12:51,520 --> 00:12:52,540
‫Agite agora.

163
00:12:55,580 --> 00:12:55,820
‫OK.

164
00:12:55,820 --> 00:12:58,260
‫Então, temos nossa classe de vibração de câmera def.

165
00:12:58,280 --> 00:13:04,460
‫Vamos para a base da lagoa CP e eu vou rolar para cima para lidar com a destruição.

166
00:13:04,460 --> 00:13:12,320
‫E a primeira coisa que vou fazer é verificar se a classe de trepidação da câmera de profundidade está definida e,

167
00:13:12,320 --> 00:13:15,980
‫se estiver, podemos realmente reproduzir a trepidação da câmera.

168
00:13:16,040 --> 00:13:21,530
‫Agora não temos um ponteiro para o controlador do jogador aqui, então vou chamar Get

169
00:13:21,920 --> 00:13:27,290
‫World daqui, obter o controlador do primeiro jogador e de lá vou chamar.

170
00:13:28,370 --> 00:13:30,380
‫O cliente inicia a vibração da câmera.

171
00:13:31,650 --> 00:13:36,150
‫E aqui podemos passar em profundidade câmera, agitar aula.

172
00:13:36,780 --> 00:13:38,070
‫E aí temos que.

173
00:13:38,160 --> 00:13:45,300
‫Então vamos compilar isso e vamos voltar para o editor e eu vou abrir a pasta --'s, BP

174
00:13:45,300 --> 00:13:46,190
‫-- tank.

175
00:13:46,200 --> 00:13:48,960
‫E aqui temos a classe de trepidação da câmera de profundidade.

176
00:13:48,990 --> 00:13:50,330
‫Eu vou definir isso para a morte.

177
00:13:50,340 --> 00:13:54,060
‫Câmera, agite, compile e salve e feche.

178
00:13:54,090 --> 00:13:56,160
‫Vou fechar o projétil também.

179
00:13:56,160 --> 00:14:02,880
‫E abra a lagoa da BP, a torre e defina a classe de vibração da câmera de profundidade para a vibração da câmera de profundidade aqui também.

180
00:14:02,910 --> 00:14:04,800
‫Agora podemos testar a morte.

181
00:14:04,800 --> 00:14:06,360
‫Então vamos ver como isso funciona.

182
00:14:06,390 --> 00:14:10,470
‫Kay, vou subir a uma das torres e.

183
00:14:11,490 --> 00:14:12,420
‫Boehm.

184
00:14:12,420 --> 00:14:14,220
‫A vibração da câmera funciona.

185
00:14:14,640 --> 00:14:19,360
‫Agora, a última coisa a verificar é se a câmera treme quando as torres morrem.

186
00:14:19,380 --> 00:14:22,080
‫Então vamos em frente e matar uma das torres.

187
00:14:22,810 --> 00:14:23,930
‫E lá vamos nós.

188
00:14:23,950 --> 00:14:27,190
‫Temos a câmera para agitar.

189
00:14:27,220 --> 00:14:28,030
‫Incrível.

190
00:14:29,240 --> 00:14:32,480
‫Então, em resumo, agora estamos agitando a câmera.

191
00:14:32,480 --> 00:14:37,760
‫Estamos sacudindo quando o projétil atinge alguma coisa e quando uma das lagoas morre.

192
00:14:37,790 --> 00:14:43,890
‫Este é apenas mais um daqueles belos efeitos de polimento que tornam nosso jogo um pouco mais profissional.

193
00:14:43,910 --> 00:14:49,460
‫Falando em polimento em nosso próximo vídeo, vamos polir o jogo e colocá-lo em

194
00:14:49,460 --> 00:14:56,450
‫seu estado de trabalho final para que possamos encerrar esta seção e ter um jogo completo em funcionamento.

195
00:14:56,480 --> 00:14:57,380
‫Vejo você em breve.

